У меня есть следующий класс. Это позволяет мне выполнять команды через java.Java - Run Bash Commands
public class ExecuteShellCommand {
public String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
}
Когда я запускаю команды, результат предыдущей команды не сохраняется. Например:
public static void main(String args[]) {
ExecuteShellCommand com = new ExecuteShellCommand();
System.out.println(com.executeCommand("ls"));
System.out.println(com.executeCommand("cd bin"));
System.out.println(com.executeCommand("ls"));
}
дает выход:
bin
src
bin
src
Почему вторая команда «LS» не показать содержимое каталога «бин»?
Смотрите также [Когда Runtime.exec() не будет] (http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t. html) для многих хороших советов по правильному созданию и обработке процесса.Затем проигнорируйте это, ссылаясь на 'exec' и используйте' ProcessBuilder' для создания процесса. –
Здравствуйте. Я попытался использовать ваш класс для выполнения Bash-Commands в моем приложении Java, но когда я запускаю команду «cat», он возвращает null ... – Zanidd