2

コードを持っていないコマンドラインプログラムを実行するために別のスレッドを開始する Java-Gnome GUI があります。GUI にプログレス バーを表示して、これまでに 2 番目のスレッドの何パーセントが完了したかを示したいと思います。

私/私のプログラムが外部プログラムを制御していない場合、これは可能ですか、それとも不確定なパルス状の進行状況バーで立ち往生していますか? ありがとう

4

1 に答える 1

6

コマンド ライン プログラムが進行状況をコンソールに報告すると、Java アプリケーションでこの出力を読み取ることができます。そのためには、 ProcessBuilderを使用してProcessオブジェクトを作成する必要があります。

ProcessBuilder processBuilder = new ProcessBuilder("yourCommandLineProgram");
Process process = processBuilder.start();
OutputStream outputStream = process.getOutputStream();

これで、オブジェクトを読み取ってoutputStream、コマンド ライン プログラムのテキスト出力を取得できます。

これはもちろん、コマンド ライン プログラムが進行状況を stdout に報告し、この出力を使用して残りの作業量を判断できる場合にのみ役立ちます。プログラムがこの情報を公開しない場合、その進行状況を知る方法はありません (実際、停止問題によると、プログラムを完全に実行しない限り、プログラムが実行される時間を知ることは不可能です)。

于 2012-12-14T13:17:36.897 に答える