1

在一项推荐中,我正在尝试将数据发送到 System.out,如下所示:

在另一个命令中,我试图从 System.in 获取这些数据。

这很奇怪,因为它多次尝试一次。我可以尝试运行它 10 次,它仍然是inReader.ready() == false,当我运行它例如第 11 次时,它可以工作。

为什么 ?我怎样才能解决这个问题?如何让它每次都工作?

提前致谢 !

4

2 回答 2

1

您无法以这种方式读取 InputStream,因为数据可能尚未到达第二个进程。您可以逐个字符地阅读,例如:

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

或简单地逐行读取输入,使用:

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

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

如果您的目标是执行 shell 命令,请不要使用 System.out 而是使用Runtime.getRuntime().exec(cmd)。查看这个问题了解更多详情。

于 2012-11-10T10:07:11.817 回答