gpt4 book ai didi

Java ProcessBuilder 问题

转载 作者:行者123 更新时间:2023-12-02 03:45:11 26 4
gpt4 key购买 nike

我在使用 > 运算符写入 Process Builder 中的文件时遇到问题。实际的过程将运行良好,让我使用 InputStreamReader 等来解析输出。我希望使用命令行将进程写入文件,例如 >test.json。

这是我的代码

try {
//process builder used to run a Python script
ProcessBuilder process = new ProcessBuilder("python",
System.getProperty("user.dir")+"\\createJson.py","--structure","cloc.csv",
"--weights","EntityEffort.csv",">","a.json");

process.directory(new File("c:\\users\\chris\\desktop\\test2"));
Process p = process.start();

} catch(Exception e) {
e.printStackTrace();
}

最佳答案

正如 @JimGarrison 指出的那样,> 由 shell 解释。在这里,您直接启动 createJson.py 进程,无需 shell。

在 UNIX 中,您可以使用 ProcessBuilder 来启动 shell:

process = new ProcessBuilder("bash", "someCommand", ">", "outputfile");

类似的东西可能适用于 Windows 和 cmd.exe

但是,这不是很好的做法。这是命令注入(inject)攻击的机会。调用外部进程是最后的手段,您应该尝试尽量减少在这些进程中执行的操作。

因此,您最好坚持使用现有的内容,并在 Java 中处理到文件的重定向。 ProcessBuilder javadoc给出了一个例子:

File log = new File("log");
processBuilder.redirectOutput(Redirect.appendTo(log));

关于Java ProcessBuilder 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36359952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com