0

我正在尝试在 Java 类中创建一个可以在运行时执行 .exe 或 .linux 文件的函数。该程序是 espresso.exe(适用于 Windows 操作系统)和 espresso.linux(适用于基于 Linux 的系统)

通常,运行程序的方法是转到命令行,然后转到存储可执行文件的文件夹并键入:

(在命令提示符中)

浓缩咖啡 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 够用吗?

提前致谢。

4

2 回答 2

2

您不能像这样进行标准输出重定向(因为 ">" 符号由 OS shell 解释),请参阅此答案以获得有效的解决方案:ProcessBuilder redirecting output

由于 Java 7 有一个纯 Java 解决方案来实现重定向:http ://tamanmohamed.blogspot.co.at/2012/06/jdk7-processbuilder-and-how-redirecting.html

于 2013-11-01T21:44:28.990 回答
2

>是一个shell语法。如果要将输出重定向到文件,则需要使用 shell 或读取输出并将其写入文件。

你使用>它的方式只是另一个论点。

于 2013-11-01T21:45:26.337 回答