Я пытаюсь взаимодействовать с приложением командной строки, используя OutputStream. Выполнение команды для приложения:
Process pr = rt.exec(
executor.getTool()
+ execProcess.getToolSuffixes().get(execProcess.getSystem().getName())
+ " "
+ executor.nextStep());
Приложение запускается и ожидает некоторого ввода, поэтому я пытаюсь выполнить запись на выходе процесса (передать другие аргументы).
PrintStream out = new PrintStream(pr.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
while (in.read() != -1) {
String s = in.readLine();
logger.debug("input read:{}", s);
if (s.contains("delimiter:")) {
String write =executor.nextStep();
logger.debug(write);
out.println(write);
out.flush();
}
}
out.close();
returnCode = pr.waitFor();
Условие if
проходит и из логов кажется, что работает. Приложение создает файл, как и ожидалось, он должен содержать переданные аргументы, но он пуст (работает при запуске вручную)