Java ProcessBuilder 输出以创建图像文件
Java ProcessBuilder output to create image file
我目前在 java 中使用 ProcessBuilder 到 运行 一个 python 脚本,就像我在终端中做的一样。这个 python 脚本应该创建一个图像,在终端中我会这样做
python3 script.py arg1 arg2 > out.png
这里的问题是 processbuilder 不允许我在参数中添加“>”(重定向输出)字符,后跟 out.png 文件的路径。
它目前创建了一个带有奇怪字符的输出(我假设它是一个 base64 字符串)。
我当前的一些代码:
File output = new File("/Users/myuser/Desktop/OUTXXXXXXXXX.png");
ProcessBuilder pb =
new ProcessBuilder("/usr/local/bin/python3", pythonScriptLocation",
fileOneLocation, fileTwoLocation);
pb.redirectInput(output);
Process process = pb.inheritIO().start();
int errCode = process.waitFor();
System.out.println("Command executed, any errors? " + (errCode == 0 ? "No" : "Yes"));
上面使用的所有变量都已声明。
已经看过这种方法,但它根本没有创建任何文件。
编辑:
使用 redirectOutput 方法:
File output = new File("/Users/myuser/Desktop/OUTXXXXXXXXX.png");
ProcessBuilder pb =
new ProcessBuilder("/usr/local/bin/python3", pythonScriptLocation",
fileOneLocation, fileTwoLocation);
File stdoutFile = new File("/Users/mysuer/Desktop/outxx.png");
pb.redirectOutput(stdoutFile);
Process process = pb.inheritIO().start();
int errCode = process.waitFor();
System.out.println("Command executed, any errors? " + (errCode == 0 ? "No" : "Yes"));
您应该停止 Java 进程从 Python 进程继承 IO(停止调用 pb.inheritIO()
)。完成后,您可以将过程的输出重定向为:
File stdoutFile = new File("out.png");
redirectOutput(output);
我目前在 java 中使用 ProcessBuilder 到 运行 一个 python 脚本,就像我在终端中做的一样。这个 python 脚本应该创建一个图像,在终端中我会这样做
python3 script.py arg1 arg2 > out.png
这里的问题是 processbuilder 不允许我在参数中添加“>”(重定向输出)字符,后跟 out.png 文件的路径。
它目前创建了一个带有奇怪字符的输出(我假设它是一个 base64 字符串)。
我当前的一些代码:
File output = new File("/Users/myuser/Desktop/OUTXXXXXXXXX.png");
ProcessBuilder pb =
new ProcessBuilder("/usr/local/bin/python3", pythonScriptLocation",
fileOneLocation, fileTwoLocation);
pb.redirectInput(output);
Process process = pb.inheritIO().start();
int errCode = process.waitFor();
System.out.println("Command executed, any errors? " + (errCode == 0 ? "No" : "Yes"));
上面使用的所有变量都已声明。
已经看过这种方法,但它根本没有创建任何文件。
编辑:
使用 redirectOutput 方法:
File output = new File("/Users/myuser/Desktop/OUTXXXXXXXXX.png");
ProcessBuilder pb =
new ProcessBuilder("/usr/local/bin/python3", pythonScriptLocation",
fileOneLocation, fileTwoLocation);
File stdoutFile = new File("/Users/mysuer/Desktop/outxx.png");
pb.redirectOutput(stdoutFile);
Process process = pb.inheritIO().start();
int errCode = process.waitFor();
System.out.println("Command executed, any errors? " + (errCode == 0 ? "No" : "Yes"));
您应该停止 Java 进程从 Python 进程继承 IO(停止调用 pb.inheritIO()
)。完成后,您可以将过程的输出重定向为:
File stdoutFile = new File("out.png");
redirectOutput(output);