昨天我问this question,我确信单线程文件服务器符合我的需要。是的,使用单个线程,文件服务器工作得很好(仅适用于小文件),它每秒可以处理大约300个请求,现在问题是写(我使用{{1} })服务器的一部分将阻塞相当长的一段时间来提供大型文件,这会阻止其他连接的连接。
我注意到FileChannel.transferTo()
在传输大文件(大约800KB)时有时会传输 0字节。它失败了:FileChannel.transferTo()
这是在Android上。
因为我将java.io.IOException: Try again.
置于一个循环中,我可以得到FileChannel.transferTo()
运行数千次以最终传输整个文件的情况。
我的问题是导致FileChannel.transferTo()
无法传输请求的字节的原因是什么?如何解决此问题并使我的文件服务器更响应处理大文件?
答案 0 :(得分:0)
该方法不可能返回零并同时抛出异常,但我建议当你'再试一次'时,你应该减少转移次数。我会把它减半,直到情况消失。无论如何,你必须在一个循环中调用transferTo()
,因此它不会对你的代码造成太大的影响。