最好的方法是什么,如何使用java捕获stdout
?
演示:
计划A 启动计划B ,计划B 打印一些输出到控制台(使用System.println("...")
),我怎样才能抓住来自 PROGRAM B 的控制台中的 PROGRAM A 输出?
我的方式是:
启动程序B并将输出重定向到文件(PROGRAM B > output.txt
)
还有更好的方法吗?
我希望,你理解我: - )
编辑:
我在互联网代码上发现了它的工作:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String program = "config_dir\\lib\\TestProject.jar";
// Run a java app in a separate system process
Process proc;
try {
proc = Runtime.getRuntime().exec("java -jar " + program + " a b c");
// Then retreive the process output
InputStream in = proc.getInputStream();
InputStream err = proc.getErrorStream();
System.out.println(convertStreamToString(in));
} catch (IOException ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
}
private String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
答案 0 :(得分:0)
这是读取/ bin / cat输出的最小代码量,它将文件复制到标准输出:
ProcessBuilder pb = new ProcessBuilder( "/bin/cat", "some.file" );
Process process = pb.start();
InputStream is = process.getInputStream();
int c;
while( (c = is.read()) != -1 ){
System.out.print( (char)c + "-" );
}
process.waitFor();