作成中の Java アプリで Handbrake を実行しようとしていますが、Handbrake が完了するのを待つのに問題があります。
これを試すと:
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", command);
Process p = builder.start();
BufferedReader inputreader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while((line = inputreader.readLine()) != null)
{
System.out.println(line);
}
私が得る出力は次のとおりです。
Encoding: task 1 of 1, 0.00 %
何度も何度もファイルが変換されません。
次のように変更すると:
BufferedReader inputreader = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader errorreader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line = null;
String line2 = null;
while((line = inputreader.readLine()) != null && (line2 = errorreader.readLine()) != null)
{
System.out.println(line);
System.out.println(line2);
}
私のテストファイルでは動作しますが、errorreader が読み取る行を使い果たし、readLine() がスレッドを無限にロックするとハングアップします。完全な長さのファイルでは、ファイルは変換されますが、コードのこの部分はロックされるため、アプリケーションを続行できません。
助言がありますか?