如何在Java上编辑控制台上的文件?

时间:2012-04-26 20:15:09

标签: java

我正在尝试从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();
}

1 个答案:

答案 0 :(得分:1)

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

解决此问题的一种方法是让Java程序的controlling terminal对您执行的程序可用:

Process proc = Runtime.getRuntime().exec(new String[]{
                           "sh", "-c", command+" </dev/tty >/dev/tty"});
proc.waitFor(); // wait for user to finish editing the file