在调试一些代码时,我注意到我的while循环没有完成。它只是卡住了?
解决问题的唯一方法是将System.out.println(fis.read(buffer));
添加到循环中。
这是循环
while(fis.read(buffer) > 0) {
System.out.println(fis.read(buffer));
dos.write(buffer);
}
有关为何发生这种情况的任何想法? 我是否需要在循环中调用fis.read?
答案 0 :(得分:2)
这是你需要做的:
while (fis.read(buffer) != -1) {
System.out.println(buffer);
dos.write(buffer);
}
您正在多次调用read
方法,并且根据javadoc,它会阻塞,直到某些输入可用(这就是程序挂起的原因)。这就是javadoc所说的:
将此输入流中的b.length个字节数据读入 字节数组。此方法将阻止,直到某些输入可用。