700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > ZIP文件解压(解决文件名乱码)

ZIP文件解压(解决文件名乱码)

时间:2021-05-06 21:20:55

相关推荐

ZIP文件解压(解决文件名乱码)

解压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>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。