本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名原文链接~~~

使用Java执行外部程序

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:


在 Java 中可以使用 RunTime 类和 ProcessBuilder 类两种方式来执行外部程序,下面以调用 ping 程序做两个示例。

import org.junit.Test;

import java.io.InputStream;
import java.io.InputStreamReader;

public class TestRunProcess {

    /**
     * ProcessBuilder 方式
     */
    @Test
    public void testProcessBuilder()throws Exception {
        // 创建 ProcessBuilder 对象
        ProcessBuilder processBuilder = new ProcessBuilder();
        // 设置第三方应用程序的命令
        processBuilder.command("ping","192.168.202.143");
        // 将标准输入流和错误流合并,类似 bash 中的 &> 操作
        processBuilder.redirectErrorStream(true);
        // 启动一个进程
        Process process = processBuilder.start();
        // 通过标准输入流拿到输出信息
        InputStream inputStream = process.getInputStream();
        printInputStreamAsString(inputStream);
    }

    /**
     * Runtime 方式
     */
    @Test
    public void testRuntime() throws Exception{
        Runtime runtime = Runtime.getRuntime();
        Process process = runtime.exec("ping 192.168.202.143");
        printInputStreamAsString(process.getInputStream());
    }

    /**
     * 将输入流转字符串并输出
     */
    private void printInputStreamAsString(InputStream inputStream) throws Exception {
        // 转成字符流
        InputStreamReader reader = new InputStreamReader(inputStream, "gbk");
        // 字符缓冲
        char[] chars = new char[1024];

        int len = -1;
        while((len = reader.read(chars))!=-1){
            String str = new String(chars, 0, len);
            System.out.println(str);
        }
        inputStream.close();
        reader.close();
    }
}
# Java 杂项  

如果这篇文章对您有帮助,可点击下方链接分享给你的朋友们😋,如果遇到问题欢迎评论、留言~~~😇

评论

公众号:zze_coding

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×