2017-11-05 17 views
0

私は1つのディレクトリからコマンドを実行する必要があり、出力を別のディレクトリに保存する必要があるeclipse rcp製品に取り組んでいます。javaを使用してコマンドを実行し、生成された出力を別のディレクトリに保存します。

コマンドの出力はファイルです。

私はそれを行う方法がありません。

私のコードはこのように動作しません。

Runtime r = Runtime.getRuntime(); 
Process p = r.exec(("CMD /C cd D:\\dir1\\bin" + " && " + command), 
      null, new File("D:\\Data\\test")); 

したがって、コマンドはdir1/binから実行する必要があり、このコマンドの出力はdata/testに保存するファイルです。

しかし、上記のコードから、出力(つまり、生成されたファイル)はdir1/binに保存されますが、これは期待されません。

+0

Runtime.execは廃止されました。その代替は、長年にわたり、[ProcessBuilder](https://docs.oracle.com/javase/9​​/docs/api/java/lang/ProcessBuilder.html)クラスでした。コマンドを単一のStringとして指定するのではなく、一連のコマンドライン引数として指定するべきです。あなたの命令を見ることなく、私はそれを正しく行う方法を教えてくれません。 – VGR

答えて

0

echo This is a command > output.txt

あなたはプロセスオブジェクト(pで指定されたInputStreamを使用することができます

0

ファイルに挿入するコマンドの末尾に「 OUTPUT.TXT>」試してみて、追加します。 getInputStream())およびFileOutputStreamをファイルに追加します。 無限のwhileループで新しいスレッドを作成し、その中の文字を読み込んでファイルに書き出します。

Process p = .... 
InputStream is = p.getInputStream(); 
FileOutputStream fos = new FileOutputStream(new File("output.txt")); 
new Thread(new Runnable() { 
    public void run() { 
     while (true) { 
      char c = (char)is.read(); 
      if (c > -1) { 
       fos.write(c); 
      } else { 
       return; 
      } 
     } 
    } 
}).start(); 

私はコードをテストしませんでしたが、動作するはずです。

関連する問題