BufferedReader.readLine()不读和悬挂系统(等待)[关闭](BufferedR

2019-08-02 15:04发布

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

Answer 1:

你需要不断的过程输入流中读取,以确保它不会阻止。

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



Answer 2:

问题的关键是这一行

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.


文章来源: BufferedReader.readLine() do not read and hang the system(wait) [closed]