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.