2017-03-02 36 views
-1

調試一些代碼時,我注意到我的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,我正在那樣做。但沒有第二次閱讀循環只是卡住.. –

回答

2

這就是你需要做什麼:

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

您caling read方法多次,並按照javadoc中,這將阻塞直到有輸入可用(這就是爲什麼程序掛起)。這就是javadoc所說的:

從這個輸入流中將b.length個字節的數據讀取到一個 字節數組中。此方法阻塞,直到有些輸入可用。

+0

謝謝你更好的while循環,但我找到了問題。這是由於服務器沒有保存文件... –