记一次Java利用cmd命令调用WinRAR压缩文件-压缩文件

前言

最近在和一个档案管理系统对接,需要把我方系统文件压缩成zip格式,通过ftp的方式upload到指定的服务器上,考虑到Java的平台无关性,一开始便使用Java自带的类库java.util.zip来实现文件的压缩,谁曾想传送过去的压缩文件对方系统解析出错。于是只能改用cmd命令调用WinRAR的方式来实现,敌方程序员完美的破坏了Java的可移植性!!

调用cmd命令

废话说了那么多,下面直接上菜:

/**

* <p>Description: 调用本地压缩工具进行压缩</p>

* @param zipFilePath 文件压缩后的存放路径

* @param sourceFilePath 源文件路径

* @return

* @date 2019年2月26日

* @author 怪蜀黍

*/

public String compressFile(String zipFilePath, String sourceFilePath) {

File file = new File(sourceFilePath);

final String cmd = "D:\\Program Files\\WinRAR\\WinRAR.exe"+" a -ibck -ep1 "+zipFilePath+" ";

Process proc = null;

if (file.isDirectory()) {

File[] files = file.listFiles();

for (int i = 0; i<files.lengt ; i++) {

try {

proc = Runtime.getRuntime().exec(cmd+files[i]);

// waitFor将返回exitValue的值0表示正常结束

if (proc.waitFor() != 0)

return ;

} catch (Exception e) {

System.out.println("压缩失败!");

}

}

}

return "";

}

我这里WinRAR的安装路径为:D:\Program Files\WinRAR\WinRAR.exe,a表示添加文件到压缩文件,-ibck表示后台运行,-ep1表示排除基本目录。其他命令参数可自行百度。

根据实际需求,文件压缩后,点开压缩包要如下图的形式,所以我这里使用了一个for循环,将文件或文件夹一个个的压缩到压缩包里面。

记一次Java利用cmd命令调用WinRAR压缩文件

压缩包

展望

个人水平有限,如有不妥望指正。解压也基本类似,查一查WinRAR的命令参数了解一下即可,此处不再复述。

推荐阅读