Java示例:如何执行进程并读取输出

Posted chuquan.ou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java示例:如何执行进程并读取输出相关的知识,希望对你有一定的参考价值。

下面是一个例子,演示如何执行一个进程(类似于在命令行下键入命令),读取进程执行的输出,并根据进程的返回值判断是否执行成功。一般来说,进程返回 0 表示执行成功,其他值表示失败。

import java.io.*;

/**
 * 示例:执行进程并返回结果
 */
public class ProcessExecutor {

    public static final int SUCCESS = 0;            // 表示程序执行成功

    public static final String COMMAND = "java.exe -version";    // 要执行的语句

    public static final String SUCCESS_MESSAGE = "程序执行成功!";

    public static final String ERROR_MESSAGE = "程序执行出错:";

    public static void main(String[] args) throws Exception {

        // 执行程序
        Process process = Runtime.getRuntime().exec(COMMAND);

        // 打印程序输出
        readProcessOutput(process);

        // 等待程序执行结束并输出状态
        int exitCode = process.waitFor();

        if (exitCode == SUCCESS) {
            System.out.println(SUCCESS_MESSAGE);
        } else {
            System.err.println(ERROR_MESSAGE + exitCode);
        }
    }

    /**
     * 打印进程输出
     *
     * @param process 进程
     */
    private static void readProcessOutput(final Process process) {
        // 将进程的正常输出在 System.out 中打印,进程的错误输出在 System.err 中打印
        read(process.getInputStream(), System.out);
        read(process.getErrorStream(), System.err);
    }

    // 读取输入流
    private static void read(InputStream inputStream, PrintStream out) {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

            String line;
            while ((line = reader.readLine()) != null) {
                out.println(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {

            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
 

以上是关于Java示例:如何执行进程并读取输出的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏子进程的输出并继续执行脚本?

[Java]_[初级]_[如何调用外部命令获取输出并设置它的超时退出]

[Java]_[初级]_[如何调用外部命令获取输出并设置它的超时退出]

执行显示控制台窗口的命令,并获取进程的句柄

使用JSCH执行命令并读取终端输出的一些使用心得

解析并执行 shell 命令