我们在工作中遇到文件的压缩的解压,我在使用的时候有遇到中文的时候,就会造成乱码。这个也是经常会用到工具类,所以就把工具类贴出来供大家参考。
1、引入依赖,这个依赖能够制定压缩文件名的编码。
<!-- ant.jar 用于解决文件解压缩乱码问题 -->
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
<version>1.6.5</version>
</dependency>
2、工具类,这里涉及tools类和java自带的类可能不容易分清,在这里也将依赖引入。这里如过没有编码问题需要将编码更改为 gbk。
package com.yin.databaseproject.util;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
import java.io.*;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
/**
* @author yin
* @Date 2020/1/12 14:51
* @Method
*/
public class ZipUtils {
private static Integer BUFFER_SIZE = 4 * 1024;
public static synchronized boolean unZip(String zipFileName, String extPlace,String encode) {
try {
return unZipFiles(zipFileName, extPlace,encode);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 解压zip格式文件到指定位置
* @param zipFileName
* @param extPlace
* @return
*/
private static boolean unZipFiles(String zipFileName, String extPlace,String encode) {
try {
(new File(extPlace)).mkdirs();
File file = new File(zipFileName);
ZipFile zipFile = new ZipFile(zipFileName,encode);
if ((!file.exists()) && (file.length() <= 0)) {
throw new Exception("要解压文件不存在");
}
String strPath,gbkPath,strtemp;
File tempFile = new File(ex