Java调用exe程序的最佳使用方式

简要说明

在项目中,若有需要调用C端的exe程序时,最好是使用ProcessBuilder,而不是Runtime.getRuntime().exec(),因为Runtime的exec() 方法,一是无法设置工作目录,二是在处理exe程序需要的参数时,可能会因为空格或者某些问题,导致调用失败

maven依赖

无,jdk底层包

样例代码

public static void main(String[] args) throws IOException {
        ProcessBuilder processBuilder = new ProcessBuilder(exePath, params1, params2);

        // 启动位置(工作目录),如果exe需要某些在其安装目录下的依赖,可以设置
        //processBuilder.directory(new java.io.File(workDirPath));

        // 启动进程
        Process process = processBuilder.start();

        // 获取输出流和错误流
        //仅在测试使用,因为真实项目中,一直死循环获取,会影响其他往下的逻辑
        //输出流和错误流,用于判断有无调用exe,看到返回的信息,有无因为参数导致错误
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));

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

        while ((line = errorReader.readLine()) != null) {
            System.err.println(line);
        }
    }
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值