FileChannel.transferTo()继续传输0个字节?

时间:2012-07-05 05:10:03

标签: java nio

昨天我问this question,我确信单线程文件服务器符合我的需要。是的,使用单个线程,文件服务器工作得很好(仅适用于小文件),它每秒可以处理大约300个请求,现在问题是(我使用{{1} })服务器的一部分将阻塞相当长的一段时间来提供大型文件,这会阻止其他连接的连接。

我注意到FileChannel.transferTo()在传输大文件(大约800KB)时有时会传输 0字节。它失败了:FileChannel.transferTo()这是在Android上。

因为我将java.io.IOException: Try again.置于一个循环中,我可以得到FileChannel.transferTo()运行数千次以最终传输整个文件的情况。

我的问题是导致FileChannel.transferTo()无法传输请求的字节的原因是什么?如何解决此问题并使我的文件服务器更响应处理大文件?

1 个答案:

答案 0 :(得分:0)

该方法不可能返回零并同时抛出异常,但我建议当你'再试一次'时,你应该减少转移次数。我会把它减半,直到情况消失。无论如何,你必须在一个循环中调用transferTo(),因此它不会对你的代码造成太大的影响。