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 に答える