Я пытаюсь запустить Handbrake через приложение Java, которое я пишу, и мне трудно дождаться завершения Handbrake.BufferedReader, кажется, бесконечно читает первую строку
Когда я пытаюсь это:
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() блокирует поток бесконечно , В файлах полной длины файл преобразуется, но эта часть кода блокируется, поэтому она никогда не продолжается с приложением.
Любые предложения?
У меня общее ощущение, что процесс, для которого вы ждёте, не дает возможности выполнить, и, следовательно, вы повесили трубку на том же выходе, что и у него. –
Что такое выход? – fftk4323
@TimBiegeleisen - Это была моя оригинальная мысль, но когда вторая работала, я был смущен тем, что могло бы случиться. –