0

私はWindowsを使用しています!

「saucy.exe」という名前のJavaコマンドラインから小さな.exeアプリケーションを呼び出したい。入力ファイル「input.saucy」が必要です。どちらも正しいディレクトリに保存されます。

コマンドを使用すると

Process p = Runtime.getRuntime().exec("saucy input.saucy");

すべてが正常に動作し、コンソールに出力が表示されます。

ただし、出力をファイルに書き込もうとすると

Process p = Runtime.getRuntime().exec("saucy input.saucy > output.saucy");

何も起こりません。

私はすでにhttp://www.ensta-paristech.fr/~diam/java/online/io/javazine.htmlでアドバイスを見つけ、コマンドを手動でトークン化しようとしました。

String[] cmd = {"saucy", "input.saucy > output.saucy"};
Process p = Runtime.getRuntime().exec(cmd);

それはまだ機能していません。何かアドバイス?遅すぎるので、出力をJavaコードでファイルに書き込むことはできません。

繰り返しますが、私はWindowsを使用しています(Linuxシステムのヒントをいくつか読んだので強調します)。

4

3 に答える 3

1

>はシェルコマンドですが、使用していません。試す

String[] cmd = { "cmd", "/C", "saucy input.saucy > output.saucy" }; 
于 2012-10-09T10:06:28.993 に答える
1

Java 7を使用している場合は、新しいProcessBuilder.redirectOutputメカニズムを使用できます。

ProcessBuilder pb = new ProcessBuilder("saucy", "input.saucy");

// send standard output to a file
pb.redirectOutput(new File("output.saucy"));
// merge standard error with standard output
pb.redirectErrorStream(true);

Process p = pb.start();
于 2012-10-09T10:20:34.983 に答える
0

getInputStream()getOutputStream()およびを使用してgetErrorStream()、出力を取得します(または入力を送信します)。

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Process.html

于 2012-10-08T18:42:50.223 に答える