在一次推荐中,我尝试将数据发送到 System.out,如下所示:
在另一个命令中,我尝试从 System.in 获取此数据。
这很奇怪,因为它在多次尝试中都有效。我可以尝试运行它 10 次,但它仍然是 inReader.ready() == false
,当我运行它(例如第 11 次)时,它可以工作。
为什么?我怎样才能解决这个问题?如何让它每次都能工作?
谢谢,提前!
最佳答案
您无法以这种方式读取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) {
...
}
关于java - Java中unix命令之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320971/