[英]How to retrieve output from an .exe file when called in a Java program?
[英]Running exe file with arguments from java program and sending output to text file
我想运行一个接受mp3文件作为参数的exe文件,并将输出重定向到文本文件。
我在命令提示符下使用以下命令,并且运行正常并在我的二进制文件夹中生成log.txt文件但是我无法通过java执行此操作。
C:\Users\Desktop\binary>codegen.exe kalimba.mp3 > log.txt
我已经尝试过ProcessBuilder类但是看不到二进制文件夹中的log.txt
File f = new File("C:/Users/Desktop/binary");
ProcessBuilder pb = new ProcessBuilder("cmd", "/c","start","codegen.exe", "kalimba.mp3", "log.txt");
pb.directory(f);
知道我可能做错了什么吗?
您应该使用ProcessBuilder
本身将输出重定向到文件。 具体来说, redirectOutput(File)
方法:
final File outFile = new File(...);
pb.redirectOutput(outFile);
使用>
(在cmd
以及Unix shell中)的重定向由命令解释器/ shell处理。
我终于成功完成了:)
ProcessBuilder pb = new ProcessBuilder("C:/Users/Desktop/binary/codegen.exe", "C:/Users/Desktop/binary/Kalimba.mp3");
Process process = pb.start();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(process .getInputStream()));
FileHandler fh = new FileHandler("D:/log.txt");
Logger logger = Logger.getLogger("global");
logger.addHandler(fh);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
String line = null;
while ((line = stdInput.readLine()) != null) {
logger.log(Level.INFO, line);
}
System.out.println("Logging Completed...");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.