max*_*rmo 30 java runtime runtime.exec
你好,我有一些关于java的问题.这是我的代码:
public static void main(String[] args) throws Exception {
Process pr = Runtime.getRuntime().exec("java -version");
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
pr.waitFor();
System.out.println("ok!");
in.close();
System.exit(0);
}
Run Code Online (Sandbox Code Playgroud)
在那个代码我试图得到一个java版本命令执行是好的,但我无法读取输出它只是返回null.为什么?
ada*_*ost 52
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getErrorStream()));
Run Code Online (Sandbox Code Playgroud)
编辑:
您可以使用ProcessBuilder(并阅读文档)
ProcessBuilder ps=new ProcessBuilder("java.exe","-version");
//From the DOC: Initially, this property is false, meaning that the
//standard output and error output of a subprocess are sent to two
//separate streams
ps.redirectErrorStream(true);
Process pr = ps.start();
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
pr.waitFor();
System.out.println("ok!");
in.close();
System.exit(0);
Run Code Online (Sandbox Code Playgroud)
请注意,我们正在逐行读取过程输出到我们的StringBuilder.由于该try-with-resources声明,我们不需要手动关闭流.该ProcessBuilder班让我们提交程序名和参数,以它的构造函数的数量.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ProcessOutputExample
{
public static void main(String[] arguments) throws IOException,
InterruptedException
{
System.out.println(getProcessOutput());
}
public static String getProcessOutput() throws IOException, InterruptedException
{
ProcessBuilder processBuilder = new ProcessBuilder("java",
"-version");
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
StringBuilder processOutput = new StringBuilder();
try (BufferedReader processOutputReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));)
{
String readLine;
while ((readLine = processOutputReader.readLine()) != null)
{
processOutput.append(readLine + System.lineSeparator());
}
process.waitFor();
}
return processOutput.toString().trim();
}
}
Run Code Online (Sandbox Code Playgroud)
打印:
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57922 次 |
| 最近记录: |