当前位置: 首页 > news >正文

【Java小功能】SFTP上传限速

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 代码逻辑


前言

监控sftp上传的速率,根据限定的上传速率,对线程采用睡眠的方式进行限速。


代码逻辑

//定义限速10Mbps
long limitBytesPerSecond = 10;
//是否限速
boolean limit = true;
// 上传文件
out = channelSftp.put(dstPath + ".w", new SFTPProcessMonitor(Files.size(Paths.get(outputFileName)), outputFileName), ChannelSftp.OVERWRITE);
uploadResult = false;
//根据业务需求合理定义大小
byte[] buffer = new byte[4096];
long sleep_time_ms = 100;
int read;
long totalBytesWritten = 0;
long starTime = System.currentTimeMillis();
if (out != null) {in = new FileInputStream(outputFileName);do {read = in.read(buffer, 0, buffer.length);if (read > 0) {out.write(buffer, 0, read);}out.flush();//限速逻辑if (limit){totalBytesWritten += read;long currentTime = System.currentTimeMillis();long elapsedTime = currentTime - starTime;if (elapsedTime > 0){long allBytes = (long) (elapsedTime * limitBytesPerSecond / 1000.0);if(totalBytesWritten > allBytes){logger.info("当前已经被限速!");long delay = (totalBytesWritten -allBytes) * 1000 / limitBytesPerSecond;Thread.sleep(Math.max(delay,sleep_time_ms));starTime = System.currentTimeMillis();//重置计时器totalBytesWritten = 0;}}}} while (read >= 0);
}
logger.info("文件{}上传至FTP成功", dstPath);

http://www.mrgr.cn/news/48597.html

相关文章:

  • Linux云计算 |【第五阶段】ARCHITECTURE-DAY1
  • 雷池社区版本SYSlog使用教程
  • 损失函数和梯度之间是什么关系
  • Unitree 3. Low level控制
  • 【项目】五子棋对战测试报告
  • metahuman如何导入UE5
  • 福建谷器参加泉州市中小企业数字化转型试点工作启动会
  • kubernetes详解
  • modelscope系统中 微调工程的forwardbackwardoptimizer调用流程
  • U盘有盘符却难开启?数据恢复全攻略
  • 喜讯∣企企通荣登“2024深圳行业领袖企业100强”榜单,彰显发展新质生产力的硬核实力!
  • AI绘图如何变现,看完这篇保姆级教程,你也会了!
  • 【C++】——继承(下)
  • 【计算机网络】详解IP协议网段划分路由转发子网掩码网络号
  • 宠物空气净化器选哪个牌子好?2024年度宠物空气净化器热销榜单揭晓!
  • 笔试算法总结
  • Allan方差分析是否需要补充确定性误差
  • TikTok流量不好是为什么?是网络没选对吗?
  • 三维扫描3D建模技术的优点有哪些?
  • [刷题][lettcode困难]4.寻找两个正序数组的中位数