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

时间:2012-11-12 06:51:29

标签: java java-ee stream filestream bufferedreader

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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.