Get output of cmd command from java code

前端 未结 3 1250
甜味超标
甜味超标 2021-01-05 18:26

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?

相关标签:
3条回答
  • 2021-01-05 18:46

    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();
      }
    }
    
    0 讨论(0)
  • 2021-01-05 18:56

    A general example to get the return from a command would be:

     Process p = null;
        try {
            p = p = r.exec(cmd2);
            p.getOutputStream().close(); // close stdin of child
    
            InputStream processStdOutput = p.getInputStream();
            Reader r = new InputStreamReader(processStdOutput);
            BufferedReader br = new BufferedReader(r);
            String line;
            while ((line = br.readLine()) != null) {
                 //System.out.println(line); // the output is here
            }
    
            p.waitFor();
        }
        catch (InterruptedException e) {
                ... 
        }
        catch (IOException e){
                ...
        }
        finally{
            if (p != null)
                p.destroy();
        }
    
    0 讨论(0)
  • 2021-01-05 18:58

    look here: Extracting a process's exit code in the case of ThreadInterrupted

    You need to get the return code... you must wait for it.

    0 讨论(0)
提交回复
热议问题