我正在尝试在Java类中创建一个可以在运行时执行.exe或.linux文件的函数。 该程序是espresso.exe(适用于Windows操作系统)和espresso.linux(基于Linux的系统)
通常,运行程序的方法是转到命令行,然后转到存储可执行文件的文件夹并输入:
(在命令提示符中)
espresso A0.txt> m.txt
或espresso A0.txt(以cmd返回输出)
(在linux终端中)
./ espresso.linux A0.txt> m.txt
或./espresso.linux A0.txt(在终端窗口中返回输出)
这里A0.txt是输入参数,m.txt是espresso创建的文件。
我已将A0.txt和espresso.linux以及espresso.exe存储在src / resources文件夹下
我尝试了以下内容:
ProcessBuilder pb = new ProcessBuilder("./src/resources/espresso.exe","src/resources/A0.txt",">src/resources/m.txt");
try {
Process p = pb.start();
}catch (IOException ex) {
Logger.getLogger(NetSynth.class.getName()).log(Level.SEVERE, null, ex);
}
我也尝试过:
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("src/resources/espresso.linux src/resources/A0.txt > src/resources/m.txt");
int waitFor = p.waitFor();
它们都无法识别要执行的文件,也不会运行该命令。我知道这两种方法可能有很多错误。我可以使用一些帮助来弄清楚要运行可执行文件的方法和代码。
此外,是否有提到运行espresso.linux的路径? /src/resources/espresso.linux会不会?
提前致谢。
答案 0 :(得分:2)
您不能像这样执行标准输出重定向(因为“>”符号由OS shell解释),请参阅此答案以获得有效的解决方案:ProcessBuilder redirecting output
自Java 7以来,为了实现重定向,只有一个Java解决方案:http://tamanmohamed.blogspot.co.at/2012/06/jdk7-processbuilder-and-how-redirecting.html
答案 1 :(得分:2)
>
是一种shell语法。如果要将输出重定向到文件,则需要使用shell或读取输出并自行将其写入文件。
你使用>
的方式只是另一个论点。