我在 Java 中使用 Runtime.exec 时遇到问题,似乎某些命令有效而其他命令无效。例如,如果我运行
echo some data > data.txt
在我的终端中,它工作正常,但是如果我尝试使用 Java 来执行此操作,它就无法工作。
Runtime mRuntime = Runtime.getRuntime();
Process mProcess = mRuntime.exec("echo some data > data.txt");
mProcess.waitFor();
有什么原因吗?
最佳答案
echo
不是真正的命令,因为它有一个可以运行的二进制文件。它是 shell 的内置函数。
您可以尝试在 Windows 中运行 cmd.exe
或在 Linux/Mac/Unix 中运行 sh
之类的 shell,然后将命令作为字符串传递。就像使用“bash”一样,您可以这样做:
编辑,因为使用 Runtime
重定向有点不同
要正确进行重定向,您应该使用采用 String[]
的 exec
形式。
这是一个使用重定向的简单示例。
public class RunTest {
public static void main(String[] args) throws Exception {
String [] commands = { "bash", "-c", "echo hello > hello.txt" };
Runtime.getRuntime().exec(commands);
}
}
但是如果您只想创建一个文件,您可以使用 Java 自己的 API 创建文件,而不是使用 Runtime
。
关于java - 在 Linux 中使用 echo 使用 Runtime.exec 创建文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914045/