0

我正在尝试从 CLI 编辑文件。我正在执行nano命令(我知道该命令将始终可用);当我执行它时,我可以看到 nano 的输出,但我无法与之交互。如何将用户输入传递给命令?您有更好的主意来轻松地从我的 Java 应用程序中编辑文件吗?

这是我的代码:

String command = "nano /tmp/163377867.txt ";
try {
    Process process = Runtime.getRuntime().exec(command);
    InputStream inputStream = process.getInputStream();
    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

    String line;
    while ((line = bufferedReader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}
4

1 回答 1

1

Java 的问题Runtime.exec在于它将标准输入和标准输出连接到“管道”,而许多控制台程序需要 TTY 设备。

解决此问题的一种方法是使 Java 程序的控制终端可用于您执行的程序:

Process proc = Runtime.getRuntime().exec(new String[]{
                           "sh", "-c", command+" </dev/tty >/dev/tty"});
proc.waitFor(); // wait for user to finish editing the file
于 2012-04-26T21:24:33.203 回答