1

重複の可能性:
Runtime.exec の呼び出し時に stdout をキャプチャする

わかりました。

私は、ビジュアル インターフェイスに基づいて PHP コードを生成する Eclipse プラグインを開発しています (つまり、ユーザーがビューにいくつかのものをドラッグ アンド ドロップすると、プラグインが関連付けられたコードでいくつかの php ファイルを更新します)。

FileUtils (Apache Commons) で php ファイルを作成しており、ASTParser を使用して PHP コードを生成しています。

私の問題は、新しく生成されたコードを美しくインデントする必要があることです。私はグーグルで検索して、これを見つけましたhttp://www.waterproof.fr/products/phpCodeBeautifier/。.exe ファイルとして提供されます。リソースに追加しましたが、呼び出して出力を取得するのに問題があります。

これどうやってするの?また、Mac と Windows マシンの両方で動作する必要があると言わざるを得ません。これはできますか?コードを美しくする簡単な方法はありますか?

ありがとう!

4

2 に答える 2

0

コマンドラインから実行し、ファイルパスを渡してコードを美しくすることができる場合は、次のコードを使用して実行し、結果をキャプチャできます。

Process p = Runtime.getRuntime().exec("executable.exec");

BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));

while ((String line = input.readLine()) != null) {
  System.out.println(line);
}

参照: バッチから実行された EXE から返されたデータをキャプチャする方法は?

exeファイルによって生成されたコンソール出力を取得するにはどうすればよいですか?

Runtime.exec の呼び出し時に stdout をキャプチャする

于 2012-08-31T15:28:10.150 に答える
0

私は次のようにします:

  1. OS に依存しない方法で exe の場所を解決します。
  2. Process`Runtime.getRuntime().exec('exe_location'); を使用して作成します。
  3. これはprocess.getOutputStream()、exeがSTDINでフォーマットされるテキストを読み取ることを意味します。
  4. process.getInputStream()取得して、フォーマットされたコードを読み取ります。これは、exe がフォーマットされた出力を STDOUT に出力することを意味します。
  5. ストリームを閉じて、プロセスを終了します。
于 2012-08-31T15:29:09.657 に答える