如果我在操作系统 native 终端(cmd.exe 或 xterm)中启动 java 程序,是否可以:
- 保留当前读写终端为
System.in
和System.out
- 打开另一个终端进行读/写
NewTerm.in
和NewTerm.out
就目前情况而言,我似乎所能做的就是打开第二个终端。我无法写入它(我尝试过 BufferedWriter
),它显示命令的唯一方法是这些命令是否在其打开时发出(即 Runtime.getRuntime("xterm ls")
或 ProcessBuilder(command).start()
;其中 command
是 String[]
) )。
我想保持两个终端打开,以便我可以比较它们的输出。顺序如下:
- 在第一个终端中运行程序
- 生成第二个终端
- 在第一个终端中发出命令
- 在第二个终端中发出命令
- 读取第一个终端输出
- 读取第二个终端输出
这可能吗?
以下是我打开新终端但打开后无法写入的方法:
public class InterFace {
public static void main(String[] args) {
try {
Process p = Runtime.getRuntime().exec("xterm");
BufferedWriter w = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
w.write("ls");
w.flush();
w.close();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s;
while ((s = r.readLine()) != null) {
System.out.println(s);
}
}
catch (IOException io) {
io.printStackTrace();
}
}
}
最佳答案
命令后需要行分隔符。
w.write("ls" + System.lineSeparator());
关于java - 打开两个终端进行读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47082938/