如何在Java程序中调用命令行

       当我们需要借助一些工具来进行大规模批量操作时,就会考虑通过Java程序直接命令行调用工具,并通过流的输出结果采取相应的操作,这样既能达到节省人力的目的,又能昼夜不断的运行,提高执行速度

       此处以工作中需要用到解压工具批量解压大量压缩包文件为例:

 

private static void unzip() {    
  String exePath = "D:\\work\\HaoZip\\HaoZipC.exe";
      if (!new File(exePath).exists())
        throw new RuntimeException("HaoZip程序未安装,请确保" + exePath + " 文件存在!");
      //x:全部解压 -y 所有提示都选是 -o解压到目录
      String cmd = "\"" + exePath + "\"" + " x -y -o\"" + unzipDir.getAbsolutePath() + "\"";
      //设置解压密码
      if (param.getPwd() != null)
        cmd += " -p" + param.getPwd();

      //设置压缩包文件
      cmd += " \"" + zipFile.getAbsolutePath() + "\"";

      try {
        log.debug("好压解压:" + cmd);
        Process p = Runtime.getRuntime().exec(cmd);
        StringBuilder sb = new StringBuilder();
        BufferedReader bufferedReader = new BufferedReader
            (new InputStreamReader(p.getInputStream(), "gbk"));
        char[] chars = new char[1];
        String line = "";
        while (bufferedReader.read(chars) != -1) {
          sb.append(chars);
          line+=String.valueOf(chars);
          if(String.valueOf(chars).equals("\n")) {
            line="";
          }else {
            if (line.contains("输入解压口令:")) {
              p.destroy();
              //销毁后等一下,否则资源文件不会立刻被释放
              ThreadUtil.sleepSeccond(3);
              throw new UnzipNeedPasswordException();
            }
          }
        }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值