一方面,我试图将数据发送到System.out。
在另一个命令中,我试图从system.in.in.in。
获取这些数据这很奇怪,因为它曾经有一次尝试。我可以尝试运行10次,并且仍然是inReader.ready() == false
,例如,当我第11次运行时,它有效。
为什么?我怎样才能解决这个问题?如何使其每次工作?
谢谢!
您无法以这种方式读取输入流,因为数据可能还没有到达第二个过程。您可以通过字符读取字符,并具有以下内容:
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) {
...
}
如果您的目标是执行shell命令,请不要使用system.out,而是 Runtime.getRuntime().exec(cmd)
。查看此问题以获取更多详细信息。