您可以使用java.lang.Runtime.exec
来运行简单的代码。这为您提供了,您可以直接读取其标准输出,而无需临时将输出存储在磁盘上。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 的流程标准输出和错误(而不是在实际命令中使用),则应查看 ProcessBuilder
。2>&1