0

次のように、ProcessBuilder を使用していくつかのコマンドを実行しています。

BufferedReader response = null;
process = processBuilder.start();           
response = new BufferedReader(new InputStreamReader(process.getInputStream()));

ただし、コードは次の行でブロックされ、応答から行を読み取ります。

while((line = response.readLine()) != null) {
  /* some code here */
}

私はいくつかのグーグルを行いましたが、readLine() が EOL を取得しないとブロックされることがわかりました。

どうすればそれを機能させるか、その問題を解決できますか。

4

1 に答える 1

1

APIによると、これが示されているものですreadLine()

1 行のテキストを読み取ります。行は、ライン フィード ('\n')、キャリッジ リターン ('\r')、またはキャリッジ リターンの直後のラインフィードのいずれかによって終了すると見なされます。

したがって、ブロックを回避するために行末記号を提供していることを確認する必要があると思います。

于 2013-03-20T20:46:41.927 に答える