您可以java.lang.Runtime.exec用来运行简单的代码。这样可以返回a,Process并且您可以直接读取其标准输出,而不必将输出临时存储在磁盘上。
例如,这是一个完整的程序,将展示如何执行此操作:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class testprog {
public static void main(String args[]) {
String s;
Process p;
try {
p = Runtime.getRuntime().exec("ls -aF");
BufferedReader br = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null)
System.out.println("line: " + s);
p.waitFor();
System.out.println ("exit: " + p.exitValue());
p.destroy();
} catch (Exception e) {}
}
}
编译并运行后,它输出:
line: ./
line: ../
line: .classpath*
line: .project*
line: bin/
line: src/
exit: 0
如预期的那样。
您还可以获得混乱的流程标准错误的错误流和流程标准输入的输出流。在这种情况下,输入和输出是相反的,因为它是从流程到该流程的输入(即流程的标准输出)。
如果要合并来自Java的流程标准输出和错误(而不是2>&1在实际命令中使用),则应查看ProcessBuilder。