1

ある褒め言葉では、次のようにデータを System.out に送信しようとしています。

別のコマンドで、このデータを System.in から取得しようとしています。

何度も試してみるとうまくいくので、不思議です。私はそれを10回実行しようとすることができinReader.ready() == falseます.

なんで ?どうすればこれを修正できますか? 毎回それを機能させる方法は?

前もって感謝します !

4

2 に答える 2

1

You can't read your InputStream that way, since the data may not have been arrived at the second process yet. You can either read character by character, with something like:

InputStreamReader inReader = new InputStreamReader(System.in); 
int data = inReader.read();
while (data != -1){
    ...
    data = inReader.read();
}

or simple read the input line by line, using:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

while ((String line = br.readLine()) != null) {
    ...
}
于 2012-11-10T09:54:51.617 に答える
0

シェルコマンドを実行することが目的の場合は、System.outを使用せずに、Runtime.getRuntime().exec(cmd)代わりに使用してください。詳細については、この質問を確認してください。

于 2012-11-10T10:07:11.817 に答える