0

BufferedReader.readLine()不看书就挂了system(wait)

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");
}
4

2 回答 2

2

您需要不断地从进程输入流中读取,以确保它不会阻塞。

阅读:http ://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

于 2012-11-12T06:55:54.437 回答
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.
于 2012-11-12T07:11:38.260 回答