2012-04-26 60 views
0

我正在嘗試從CLI編輯文件。我正在執行nano命令(我知道該命令將始終可用);當我執行它時,我可以看到納米的輸出,但我無法與之交互。我如何將用戶輸入傳遞給命令?你有更好的主意,從我的Java應用程序輕鬆編輯文件嗎?如何從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(); 
} 
+0

可以['nano'命令手冊(http://www.nano-editor.org /dist/v2.0/nano.html)可以幫助你嗎? – Lion 2012-04-26 20:20:02

+1

我想你會需要編寫一個完整的終端模擬器來做到這一點。 – zapl 2012-04-26 20:20:07

+0

它是基於控制檯的應用程序還是您有某種圖形用戶界面? – Rob 2012-04-26 21:03:10

回答

2

Java的Runtime.exec的問題是,它雖然許多控制檯程序需要一個TTY設備連接stdin和stdout爲「管道」。要解決這個問題

一種方法是使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 
+0

感謝您的回覆。這是解決方案。 – Marce 2012-04-26 22:15:42