2013-03-20 30 views
0

我使用的ProcessBuilder如下執行某些命令。爲什麼我的程序在從BufferedReader讀取行時阻塞?在下面的行從響應</p> <pre><code>BufferedReader response = null; process = processBuilder.start(); response = new BufferedReader(new InputStreamReader(process.getInputStream())); </code></pre> <p>但是代碼塊,而讀取行:

while((line = response.readLine()) != null) { 
    /* some code here */ 
} 

我做了一些谷歌,我發現,當readLine()沒有得到EOL然後它會阻止。

如何使其工作或解決該問題。

+2

周圍的方式之一是,你可以讀取的字節,而((I = bufferreader.read(緩衝,我,100))!= -1){ // 做工作 } – Addict 2013-03-20 20:46:38

+0

類似於:HTTP ://stackoverflow.com/questions/6792835/how-do-you-set-a-timeout-on-bufferedreader-and-printwriter-in-java-1-4 – user1697575 2013-03-20 20:48:44

+0

感謝您的幫助。我會試試這個。 :) – 2013-03-20 21:07:58

回答

1

根據API,這是表示對readLine()

讀取一行文本。換行符被換行符('\ n'),回車符('\ r')或回車符後面的換行符中的任何一個結束。

所以我認爲你必須確保你提供的行結束符以避免阻塞。

+0

如何設置行結束符?該響應由執行進程構建器返回。只是我可以閱讀它。對? – 2013-03-20 21:10:18

+0

line = response.readLine()我沒有得到任何迴應或字符串在這一行。所以我無法在行尾添加'\ n'。 – 2013-03-20 21:16:06

+0

@Addict註釋應該對此進行排序,讀取'bytes'而不是'lines' – tmwanik 2013-03-20 21:27:53

相關問題