读取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?
答
这就是你需要做什么:
while (fis.read(buffer) != -1) {
System.out.println(buffer);
dos.write(buffer);
}
您caling read
方法多次,并按照javadoc中,这将阻塞直到有输入可用(这就是为什么程序挂起)。这就是javadoc所说的:
从这个输入流中将b.length个字节的数据读取到一个 字节数组中。此方法阻塞,直到有些输入可用。
+0
谢谢你更好的while循环,但我找到了问题。这是由于服务器没有保存文件... –
您正在阅读两次每次迭代... –
Ik,我正在那样做。但没有第二次阅读循环只是卡住.. –