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 デバイスを必要とする一方で、標準入力と標準出力を「パイプ」に接続することです。

この問題を解決する 1 つの方法は、実行するプログラムが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 に答える