如何在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(); } 

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

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

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