• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Java执行外部程序并获取其输出数据

JAVA相关 水墨上仙 2161次浏览

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

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执行外部程序并获取其输出数据
喜欢 (0)
加载中……