此代码应执行命令行,但它仅适用于某些命令。例如,它适用于打开和运行jar文件,但似乎无法执行命令:
echo 'Hello World' > HelloWorld.txt
应该创建一个名为HelloWorld的txt文件。有人能帮我解决问题吗?
public static void command(String command) {
try {
Process p = Runtime.getRuntime().exec(command);
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
问题是您的命令中有>
,并且您将字符串输入到exec
函数。我不确切地知道为什么exec命令不能执行这样的语句,但是如果你有管道|
或重定向>
等,当命令作为一个命令给出时它不能处理它字符串输入。您需要做的是将其作为单独的脚本运行,即如下
public static void command(String command) {
try {
String[] cmd = {"/bin/sh", "-c" , command }; // you have to input an string array your command will be executed in a new shell.
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
新的shell进程将由/ bin / sh创建,整个命令(包括重定向)在返回之前执行。