Java中的Unix命令之间的通信



一方面,我试图将数据发送到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)。查看此问题以获取更多详细信息。

相关内容

  • 没有找到相关文章

最新更新