次のタスクを実行するプロジェクト用の小さなアプリケーションを作成しました。
- commands.bat ファイルを書き込みます。このバッチ ファイルには、処理に時間がかかるいくつかのソース コード サーバー コマンドが含まれています。
- ProcessBuilder を使用して commands.bat を実行し、redirectOutput(File file) メソッドを使用して outputfile.txt を取得します。
- outputfile.txt を読み取り、目的の出力を取得します。
このアプリケーションを実行すると、プログラム制御は step-1 から始まり、完全に実行されます。ステップ 2 では、コントロールはバッチ ファイルを駆動するプロセスを開始します。今、commands.bat ファイルが完了するまでに時間がかかります (ソース コード サーバーからの応答によって異なります)。このバッチは、コントロールが待機せずにステップ 3 の実行を開始する妥当な時間より少し長くかかることがあります。このようにして、outfile.txt で完全なストリームを取得できません。次のようなものも使用しました。
- waitfor(): このコントロールでもプロセスが終了するのを待っていません (技術的には間違っているかもしれません)
- Thread.sleep()。バッチファイル処理にかかる時間は不明であるため、これは機能していません。
助けてください。