从Java代码获取cmd命令的输出

我有一个程序,可以从我的代码成功执行cmd命令,但我希望能够从cmd命令获取输出。我怎样才能做到这一点?

到目前为止,我的代码是:

Second.java:

public class Second {

public static void main(String[] args) {

System.out.println("Hello world from Second.java");

}

}

和Main.java

public class Main {

public static void main(String[] args) {

String filename = args[1].substring(0, args[1].length() - 5);

String cmd1 = "javac " + args[1];

String cmd2 = "java " + filename;

Runtime r = Runtime.getRuntime();

Process p = r.exec(cmd1); // i can verify this by being able to see Second.class and running it successfully

p = r.exec(cmd2); // i need to see this output to see if

System.out.println("Done");

}

}

我可以通过检查Second.class来检查第一个命令是否正常工作,但是如果该类产生了一些错误,我将如何看到该错误呢?

回答:

您需要流程的OutputStream(InputStream)(并且应该使用ProcessBuilder)…就像这样

public static void main(String[] args) {

String filename = args[1].substring(0, args[1].length() - 5);

String cmd1 = "javac " + args[1];

String cmd2 = "java " + filename;

try {

// Use a ProcessBuilder

ProcessBuilder pb = new ProcessBuilder(cmd1);

Process p = pb.start();

InputStream is = p.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is));

String line = null;

while ((line = br.readLine()) != null) {

System.out.println(line);

}

int r = p.waitFor(); // Let the process finish.

if (r == 0) { // No error

// run cmd2.

}

} catch (Exception e) {

e.printStackTrace();

}

}

以上是 从Java代码获取cmd命令的输出 的全部内容, 来源链接: utcz.com/qa/414058.html

回到顶部