从Java代码获取cmd命令的输出 [英] Get output of cmd command from java code

查看:93
本文介绍了从Java代码获取cmd命令的输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个程序,可以从我的代码成功执行cmd命令,但是我希望能够从cmd命令获取输出。我该怎么办?

I have a program where I was able to successfully execute cmd commands from my code, but I want to be able to get the output from the cmd command. How can I do that?

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

So far my code is:

Second.java:

Second.java:

public class Second {
    public static void main(String[] args) {
        System.out.println("Hello world from Second.java");
    }
}

和Main.java

and 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,但是如果此类产生了错误,该怎么办?我如何才能看到该错误?

I can check the first command is working successfully by checking for Second.class, but what if this class generated some error, how will I be able to see that error?

推荐答案

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

You need to the OutputStream (InputStream) of your Process (and you should use a ProcessBuilder)... like so

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命令的输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆