关于使用NIO的transferTo方法拷贝文件的问题

来源:6-8 Selector简析

ice_wolf

2019-11-21

老师你好,下面这段代码有个地方我想不太明白

long transferred = 0L;
long size = fin.size();
while (transferred != size){
    transferred += fin.transferTo(0, size, fout);
}

既然一次transfer不能保证全部传完,那么下一次transfer的时候传入的参数为什么不需要根据上次传完的数据重新计算呢,即代码编程下面这样:

long transferred = 0L;
long size = fin.size();
while (transferred != size){
    transferred += fin.transferTo(transferred+1, size-transferred, fout);
}

我看了transferTo这个方法的注释,只看到这个方法不保证一次全部传完,但没有说怎样才能保证全部传完,想知道老师是从哪里看到这个能够保证全部传完的方法的呢,还是从实践中摸索出来的。谢谢!

写回答

1回答

Stannum

2020-08-08

同学你好~你的问题非常好~事实上,同样的问题我之前已经在其他同学提出的时候解答过了:https://coding.imooc.com/learn/questiondetail/146379.html

抱歉之前解答过之后,我还没有更新课程仓库里的代码,你愿意提交一个合并请求来修复这个问题吗?


0
0

系统学习Java网络编程 深度理解BIO/NIO/AIO

对比式学习助你真正理解BIO/NIO/AIO三大网络编程模型。

880 学习 · 148 问题

查看课程