有时候,你的程序有可能会做压缩和解压缩的操作,当然,你完全可以使用Java自带的压缩和解压缩的工具类来完成,但是那样也会带来一些问题:最主要的就是中文乱码的问题以及保持目录结构的问题。所以,我们完全可以借助7Zip来完全文件的压缩与解压缩。
使用Java调用7Zip来完全任务其实说白了就是使用7Zip的命令行模式,然后使用Java的Runtime.getRuntime().exec()来执行相应的命令就可以了,好了,废话不多说,直接上代码吧:
import java.io.File;
/**
* 7Zip封装工具类
*
* @author Storezhang
*/
public class ZipUtils {
public static void unZip(String filename) throws Exception {
File zipFile = new File(filename);
if (!zipFile.exists()) {
return;
}
File zipExeFile = new File("./7z.exe");
String exec = String.format("%s x -aoa \"%s\" -o\"%s\"", zipExeFile.getAbsolutePath(), zipFile.getAbsolutePath(), zipFile.getParent());
Runtime runtime = Runtime.getRuntime();
runtime.exec(exec);
}
}
需要注意的是,路径两边都要加上双引号来引上,以防止目录中有空格的情况。另外,此代码只在Windows上能执行,如果你要在Linux上执行的话,需要确保Linux的目标机器上有7Zip软件。