解压zip文件:
/*** 解压zip文件** @param targetPath 解压路径* @param sourceFile 源文件* @throws ZipException*/public static void unzipFiles(String targetPath, File sourceFile) throws ZipException, UnsupportedEncodingException {ZipFile zipFile = new ZipFile(sourceFile);zipFile.setCharset(Charset.forName(CHARSET_GBK));log.info("begin unpack zip file:{}", sourceFile);String extractedFile;for (FileHeader fileHeader : zipFile.getFileHeaders()) {extractedFile = fileHeader.getFileName();// 如果是fileHeader的文件名是utf-8且zipFile的编码不为空且zipFile的编码不是utf-8,则重置zipFile的编码为utf-8if (fileHeader.isFileNameUTF8Encoded() && zipFile.getCharset() != null&& !CHARSET_UTF8.equalsIgnoreCase(zipFile.getCharset().name())) {// 转换文件名extractedFile = new String(extractedFile.getBytes(CHARSET_GBK), CHARSET_UTF8);// 重置zipFile的编码zipFile.setCharset(Charset.forName(CHARSET_UTF8));// 重置fileHeader的文件名fileHeader.setFileName(extractedFile);} else if (zipFile.getCharset() != null && !CHARSET_GBK.equalsIgnoreCase(zipFile.getCharset().name())) {zipFile.setCharset(Charset.forName(CHARSET_GBK));}zipFile.extractFile(fileHeader, targetPath, extractedFile);}log.info("unpack zip file success");}
pom依赖:
<dependency><groupId>net.lingala.zip4j</groupId><artifactId>zip4j</artifactId><version>2.2.8</version></dependency>