BufferedReader.readLine()不读取并挂起系统(等待)

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

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

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

重点是这一行

 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 ho print accordingly.