java解压zip文件,处理文件名不能为中文

Android中用Java代码实现zip文件解压缩 如果需要下载的文件有很多是中文名的,解压时有中文名的文件出现乱码,试了很多方法不能解决问题。据说有一个Java插件包,用这个插件包可以解决中文名乱码的问题,但不知解压的文件是否要用它提供的类压缩后的文件,是否能解决用rar工具压缩的有中文名的文件,这个还没有试过。 参考资料:@1.http://www.oschina.net/code/snippet_4873_4142 阅读详情



1、最近工作需要把压缩文件解压,经过测试有两种方法,一种是JDK自带的ZipFile,

      另外一种是org.apache.tools.zip进行解压。

2、经测试,JDK自带的文件不能处理文件名为中文的压缩文件(包括压缩文件包含的文件名)

     原因是:压缩解压ZIP文件对文件名都是以UTF-8编码方式来处理的,而WinZip对文件名只会

    以ASCII编码方式来处理

3、解决办法:Apache Ant有个包专门处理ZIP文件,可以指定文件名的编码方式。由此可以解决问题。

4、代码如下:

   说明:zipFileName是文件的绝对路径(包含文件名称),outputDirectory是输出路径(不包含名称)

比如:zipFileName=D:\\pdf\\zip\\test测试.zip

outputDirectory=D:\\pdf\\zip 

        如需共同讨论请联系QQ:470312712     

public static void unZip(String zipFileName, String outputDirectory)throws Exception {
try {
ZipFile zipFile = new ZipFile(zipFileName, "GB2312");
Enumeration e = zipFile.getEntries();
ZipEntry zipEntry = null;
createDirectory(outputDirectory, "");
while (e.hasMoreElements()) {
zipEntry = (ZipEntry) e.nextElement();
System.out.println("unziping " + zipEntry.getName());
if (zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
System.out.println("创建目录:" + outputDirectory+ File.separator + name);
} else {
String fileName = zipEntry.getName();
fileName = fileName.replace('\\', '/');
if (fileName.indexOf("/") != -1) {
createDirectory(outputDirectory, fileName.substring(0,fileName.lastIndexOf("/")));
fileName = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length());
}

File f = new File(outputDirectory + File.separator+ zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out = new FileOutputStream(f);
byte[] by = new byte[1024];
int c;
while ((c = in.read(by)) != -1) {
out.write(by, 0, c);
}
out.close();
in.close();
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}

使用Java解压ZIP文件完整示例:包含中文文件名处理 压缩与解压缩功能对于提高数据处理效率和减少存储空间占用至关重要。使用现成的Java库可以简化开发流程,避免重复造轮子,提升应用的稳定性和效率。此外,对于需要跨平台运行的应用来说,使用Java库可以确保在不同操作系统中表现一致。在开始编码之前,我们需要规划一个清晰的项目结构,以确保代码的可维护性和可读性。这里是一个简单的项目结构示例:| src/在这个结构中,我们有一个main目录包含我们的源代码,一个resources目录用于存放资源文件,以及一个test目录用于存放测试代码。 阅读详情

相关推荐

掌握Java解压缩:ZIP文件处理实战

本文还有配套的精品资源,点击获取 简介:在Java中处理ZIP文件是常见需求,主要通过 java.util.zip 包来实现。本文将讲解如何使用Java解压ZIP文件,并重点介绍处理中文文件名的技巧。文章将详细介绍 ZipEntry 、 ZipFile 、 ZipInputStream 和 ZipOutputS...

weixin_36197669的博客 2091

Java的zip文件压缩与解压:ZipInputStream,ZipOutputStream

通过上面的例子,我们知道压缩包里的是一个个ZipEntry对象,在解压时,可以遍历压缩包获取到ZipEntry对象。每一个ZipEntry对象都是一个文件,使用ZipFile可以获取到每一个ZipEntry对象的文件流;获取到文件流就可以将压缩包的文件读出来了。在创建ZipEntry对象时可以指定文件在压缩包的位置:new ZipEntry(“second-dir\second-01.txt”)用ZipOutputStream来压缩一个文件夹时,要搭配ZipEntry来使用。

Myd 1万+

ZipInputStream解压有中文名报错问题解决

对jdk内置的zip解压缩存在bug 如果zip文件里有中文文件,会报错 现在把这个问题解决。

JAVA实现文件压缩和解压,解决Java原生压缩组件不支持中文文件名的问题

JAVA实现文件压缩和解压。 解决Java原生压缩组件不支持中文文件名的问题。 ZIPOutputStream压缩和解压失败。 ZIPOutputStream压缩和解压出现乱码。 ZIPOutputStream无法压缩中文文件,ZIPOutputStream解压中文文件乱码。 ZIPOutputStream解决中文乱码问题。......

qq_43600166的博客 3306

解压zip压缩文件,支持多文件目录解压,中文乱码问题

在使用Java对ZIP压缩文件进行解压的方式中有两种,一种是使用apache提供的ant.jar工具包,但是如果ZIP文件中含有中文名称的文件,在解压后,文件名将出现乱码,另一种是使用Java自身JDK中java.util.zip包下工具类,但是同样如果有中文名的情况下依然会出现乱码情况。因此对于这种乱码的处理,一种是修改JDK下的几个源文件,一种就是把需要用的JDK源文件重新反编译进行处理,单独放在一个包中,在使用的时候,调用自己处理过的包中文件进行处理即可。附件tools.rar压缩文件是我进行处理过后的需要调用到的java源程序,主要为Deflater.java,DeflaterOutputStream.java,InflaterInputStream.java,ZipConstants.java,ZipEntry.java,ZipInputStram.java,ZipOutputStream.java文件,其中CompresszZipFile.java为入口点

Dify使用教程(创建应用)

Dify的安装部署我已经写过了,简单的模型配置我也在前面进行了讲解,今天我们主要来讲讲如何使用Dify。

wal1314520的博客 1万+

【Java】解压zip包时内部中文名称文件出现java.lang.IllegalArgumentException: MALFORMED报错的处理

java.lang.IllegalArgumentException: MALFORMED报错解决

weixin_42369773的博客 3587

数据驱动AI落地:从业务价值到技术实践的全链路方法论

以数据驱动为核心,围绕 AI 落地全链路展开:先建全域数据体系(拉通内外部数据、治理数据质量),再将 AI 嵌入研发、制造、营销、服务等业务链路解决痛点,搭配混合算力架构保障技术落地,辅以 “小场景试错 - 复制” 战略、跨部门团队等方法论。结合美的集团数字化转型实践,最终实现 AI 对业务降本、增效、增收的价值,为企业 AI 转型提供可复用路径。

专注数据驱动领域原创分享。拆解从数据采集、建模分析到业务价值落地的全链路实践,聊决策逻辑、技术工具与场景案例。用通俗语言讲透数据如何赋能业务,与同路人共探数据价值。 1893

压缩文件ZipEntry中文乱码

压缩文件内文件名为中文是出现乱码: ZipEntry zipEntry = new ZipEntry(zipEntryName); 将引用由java.util.zip.*换成org.apache.tools.zip.*的就可以了,同时设置编码,java.util.zip里面没有设置编码的方法 /*import java.util.zip.ZipEntry; import java.util.

李鬼989的专栏 1万+

Cursor 使用教程(2025年更新版)

官方Cursor详细使用教程在“扩展学习”

我是赛博AI Lewis 7082

RTAB-MAP实战:用Realsense D435i在ROS中搭建室内3D地图(附避坑指南)

本文详细介绍了如何在ROS环境下,使用Intel Realsense D435i深度相机和RTAB-MAP算法进行室内3D地图构建的完整实战流程。内容涵盖环境配置、核心节点数据流解析、关键参数调优、地图保存与重定位,并提供了实用的避坑指南,帮助机器人开发者和研究者快速实现稳定的视觉SLAM应用。

weixin_29095049的博客 492

java实现对rar文件和zip文件的解压缩

java实现对rar文件和zip文件的解压缩 一.对zip文件的解压缩 1.1 使用ZIP4J实现 zip4j官方说明: Create, Add, Extract, Update, Remove files from a Zip file 针对ZIP压缩文件创建、添加、抽出、更新和移除文件 Read/Write password protected Zip files (读写

ForeverLove的博客 2万+

解压rar和zip文件名中文乱码问题,以及获取zip文件中的内容

import java.io.*; import java.util.Enumeration; import java.util.zip.ZipEntry; import com.github.junrar.Archive; import com.github.junrar.rarfile.FileHeader; import org.apache.commons.compress.archiv...

happylobster 2887

ESP32设备驱动-直流电机与L298N电机驱动器

在本文中,我们将介绍如何使用ESP32通过L298N电机驱动器驱动直流电机。

视觉与物联智能 3597

OpenMM | PDBFixer 用于蛋白质预处理

PDBFixer 用于蛋白质预处理

DrugOne 3007

java读取zip文件名_java无需解压zip压缩包直接读取包内的文件名(含中文)

java自带了java.util.zip工具可以实现在不解压zip压缩包的情况下读取包内文件的文件名:(注:只能是ZIP格式的,rar我试了不行)代码如下:public static String readZipFile(String path, String str) throws IOException {ZipEntry zipEntry = null;File file = new Fil...

weixin_32667439的博客 3274

使用rknn进行facenet部署

修改facenet网络的forward函数代码。

如果想成为中心,那么就到中心去吧。 1047

Java解压zip 解决编码和中文乱码问题

项目由GBK转成UTF-8 遇到原有解析zip发现中文文件名称乱码问题 <!--pom包--> <dependency> <groupId>net.lingala.zip4j</groupId> <artifactId>zip4j</artifactId> <version>1.3.2...

风起未来 6477

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java解压zip文件

Java解压zip文件前提代码pom.xmlZipUtil.java运行 前提 zip文件存在:D:\tmp\mytest.zip。下面将以解压“D:\tmp\mytest.zip”到目录“D:\tmp”为例进行示例。 代码 pom.xml <!-- 日志 --> <dependency> <groupId>org.projectlombok</g...

DRD 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java解压zip文件

package com.chuangqi.tools; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import java.io.*; import java.util.Enumeration; public class FileUnZipUtils { /** * 解压zip文件 * @author xiyue * @param sourceFile,待解压的zi

京北游戏官方 1万+

Java将byte流转换成zip文件_java zip文件的压缩与解压

[ 我们经常会使用WinZIP等压缩软件将文件进行压缩以方便传输。在java里面也提供了将文件进行压缩以减少传输时的数据量的类,可以很方便的将文件压缩成ZIP、JAR、GZIP等形java里面有个包叫java.util.zip提供zip文件压缩,但是编码的时候非常不方便。编码量太多了,通过搜索,发现apache有个包提供一些简单的方法来实现zip文件的压缩与解压缩http://ant.apach...

weixin_39980903的博客 3089

java 解压文件_java实现解压zip文件,(亲测可用)!!!!!!

项目结构:Util.java内容:package com.cfets.demo;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.nio.charset.Ch...

weixin_28923881的博客 5056

java解压中文文件报错_java zip文件的解压缩(支持中文文件名)

importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.Enumeration;importj...

weixin_34660766的博客 533

JAVA ZipFile 解压zip 避免文件名中文乱码

String zipFilePath="C:\\Users\\Joue\\Desktop\\unzip.zip"; String destDir ="C:\\Users\\Joue\\Desktop\\unzip";  ZipFile zipFile = new ZipFile(zipFilePath);   //此处可自动识别编码         Enumeration&lt;?&gt; e...

bingguang1993的博客 5907

java zip 解压 文件排序_java实现zip的压缩和解压(支持中文文件名)

用过java做压缩或解压的都知道,jdk提供的zip只能按UTF-8格式处理,所有jdk提供的zip不能支持中文文件名采用Apache的zip包解决中文文件名问题(依赖 ant-1.9.6.jar)package cn.tzz.zip;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java...

weixin_42357719的博客 841
上一篇: 硅谷企业家总结57条创业经验:产品至上
下一篇: oracle 导入导出
pangjianjava
博客等级 码龄15年 0粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值