Выполнение внешней программы в java
Я попытался создать приложение, которое вызывает внешнюю программу, которая должна передать два параметра. Он не дает никаких ошибок. Программа .exe, написанная на языке С++, делает снимок и изменяет содержимое txt файла. Программа java работает, но ничего не делает
Вот мой пример кода
String[] params = new String [3];
params[0] = "C:\\Users\\user\\Desktop\\program.exe";
params[1] = "C:\\Users\\user\\Desktop\\images.jpg";
params[2] = "C:\\Users\\user\\Desktop\\images2.txt";
Runtime.getRuntime().exec(params);
Ответы
Ответ 1
заимствовал это из здесь
Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.printf("Output of running %s is:", Arrays.toString(args));
while ((line = br.readLine()) != null) {
System.out.println(line);
}
Больше информации здесь
Другие вопросы о том, как передавать команды здесь и здесь
Ответ 2
Это неправильно. Вот как вы должны использовать Runtime.exec()
. Вы также можете попробовать более современный кузен, ProcessBuilder
:
Java Runtime.getRuntime(). exec() альтернативы
Ответ 3
import java.io.*;
public class Code {
public static void main(String[] args) throws Exception {
ProcessBuilder builder = new ProcessBuilder("ls", "-ltr");
Process process = builder.start();
StringBuilder out = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
String line = null;
while ((line = reader.readLine()) != null) {
out.append(line);
out.append("\n");
}
System.out.println(out);
}
}
}
Попробуйте онлайн