2012-11-12 44 views
0

BufferedReader.readLine()不讀取並掛起system(wait)BufferedReader.readLine()不讀取並掛起系統(等待)

InputStream istrm = runtimeProcess.getInputStream(); 
InputStreamReader istrmrdr = new InputStreamReader(istrm); 
BufferedReader buffrdr = new BufferedReader(istrmrdr); 
System.out.println("4"); 
String data; 
String st; 
System.out.println("4a"); 
while (!(st=buffrdr.readLine()).isEmpty()) { 
    System.out.println("5 in loop"); 
} 
+0

好吧,大概你沒有給它一行閱讀...沒有更多的信息很難再說。請參閱http://tinyurl.com/so-hints –

+0

我應該發佈我的完整方法嗎? – Dingling

+0

不,你應該告訴我們爲什麼你期望它能夠讀取一行。你在閱讀什麼過程?可能是因爲你沒有從錯誤流中讀取而被阻塞? –

回答

0

的一點是此行

while (!(st=buffrdr.readLine()).isEmpty()) 

您的代碼將等待行終止。也就是說,直到找到「\ n」字符;它會保持緩衝,因此不會出現循環。因此,無論是在輸入流中設法快速行。或者通過字節讀取。 你應該讀取字節並一起工作。

int i=0; 
char[] buf = new char[10000] 
while((i=buffrdr.read(buf,i,100))!= -1) 
{ 
String h = new String(buf); 
//use h o print accordingly. 
+0

如何讀取的字節 – Dingling

+0

IM仍然面臨着字節讀什麼問題可能是等待問題 – Dingling

+0

試試這個: while((i = buffrdr.read())!= - 1){//} – Jatin