windows系统java.nio.channels.FileChannel#transferTo传输文件
发布时间:2020-12-13 21:06:44 所属栏目:Windows 来源:网络整理
导读:1.问题描述 最近在写程序的时候有一个需求,将文件通过网络进行传输,考虑到性能,最终选用FileChannel#transferTo进行传输,最初的代码如下: fileChannel.transferTo( 0 ,fileChannel.size(),socketChannel); 结果文件比较大的时候(比如说十几M),总是传输
1.问题描述 最近在写程序的时候有一个需求,将文件通过网络进行传输,考虑到性能,最终选用FileChannel#transferTo进行传输,最初的代码如下: fileChannel.transferTo(0,fileChannel.size(),socketChannel);
结果文件比较大的时候(比如说十几M),总是传输不完整;经查阅资料,原来大文件传输的时候,windows对一次传输的大小是有限制的; 2.解决方案 通过transferTo返回的实际传输大小进行多次传输即可; long position = 0;
long size = fileChannel.size();
long total = 0;
long startTime = System.currentTimeMillis();
while (position < size) {
long transfer = fileChannel.transferTo(position,socketChannel);
System.out.println("发送:" + transfer);
if (transfer <= 0) {
break;
}
total += transfer;
position += transfer;
}
3.总结 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在Windows Mobile 6下将Flash游戏嵌入到Windows Forms
- 在Windows server2008中搭建sqli-lab实验环境
- windows – 使用$in参数检查Nagios
- winapi – Windows跳过特定于语言的资源
- 在不使用System.Windows.Input.ICommand的情况下在WPF中实现
- windows – SAL on Sublime Text 3 – [解码错误 – 输出不
- windows-phone-8.1 – Windows 10中的Windows Phone 8.1模拟
- windows – 如何从命令行设置Sphinx的`exclude_patterns`?
- Windows程序集怀疑 – x86
- 经验丰富的Windows SysAdmin应该如何学习Linux?