Windows コマンド プロンプトでコード行を実行する Java プログラムを作成しようとしています。外部プログラム (7-Zip) を使用していくつかの RAR ファイルを抽出したいと考えています (それよりも複雑ですが、当面の問題には関係ありません)。
Runtime インスタンスを取得し、.exec() メソッドを使用しました。1 つのアーカイブを単独で抽出しようとすると問題なく動作しますが、同時に複数のアーカイブを抽出しようとすると、プロセスがハングアップし、.waitFor() が返されません。
問題を調査したところ、プロセスが生成している出力が原因であると考えています。何らかのバッファがいっぱいになり、プログラムがロックされているようです。私はここに概説されました。私はこのソリューションを実装しました(入力ストリームを使用してファイルに送信したことを除いて)、実際に機能しました。ただし、まったく不要な出力をすべて書き込むには、余分な時間がかかるようです。
BufferedReader をだまして、実際に書き込むことなく、バッファにあるすべてのものを書き込んだと思わせる方法があるかどうか疑問に思っていましたか?
最後まで読んでくれてありがとう!