读取FileInputStream时出现奇怪的循环

问题描述:

调试一些代码时,我注意到我的while循环没有完成。它只是卡住了?读取FileInputStream时出现奇怪的循环

解决此问题的唯一方法是将System.out.println(fis.read(buffer));添加到循环中。

这是循环

 while(fis.read(buffer) > 0) { 
     System.out.println(fis.read(buffer)); 
     dos.write(buffer); 
     } 

上为什么发生这种情况的任何想法? 我是否需要在循环中调用fis.read?

+0

您正在阅读两次每次迭代... –

+0

Ik,我正在那样做。但没有第二次阅读循环只是卡住.. –

这就是你需要做什么:

while (fis.read(buffer) != -1) { 
    System.out.println(buffer); 
    dos.write(buffer); 
} 

您caling read方法多次,并按照javadoc中,这将阻塞直到有输入可用(这就是为什么程序挂起)。这就是javadoc所说的:

从这个输入流中将b.length个字节的数据读取到一个 字节数组中。此方法阻塞,直到有些输入可用。

+0

谢谢你更好的while循环,但我找到了问题。这是由于服务器没有保存文件... –