一个ZIP压缩包解压的代码,使用了ANT.JAR包解决了解压过程中的中文问题
由于解压后,中文目录名的前一半是用ISO5586-1编码的 后一半是用UTF-8的
所以用一半的编码转换难以实现
java 代码
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import org.apache.tools.zip.ZipEntry;
- import org.apache.tools.zip.ZipFile;
- public class FileUnit {
- public void unzipFile(String zipFileName) throws Exception {
- try {
- File f = new File(zipFileName);
- ZipFile zipFile = new ZipFile(zipFileName);
- if((!f.exists()) && (f.length() <= 0)) {
- throw new Exception("要解压的文件不存在!");
- }
- String strPath, gbkPath, strtemp;
- File tempFile = new File(f.getParent());
- strPath = tempFile.getAbsolutePath();
- java.util.Enumeration e = zipFile.getEntries();
- while(e.hasMoreElements()) {
- org.apache.tools.zip.ZipEntry zipEnt = (ZipEntry) e.nextElement();
- gbkPath=zipEnt.getName();
- if(zipEnt.isDirectory()) {
- strtemp = strPath + "/" + gbkPath;
- File dir = new File(strtemp);
- dir.mkdirs();
- continue;
- } else {
-
- InputStream is = zipFile.getInputStream(zipEnt);
- BufferedInputStream bis = new BufferedInputStream(is);
- gbkPath=zipEnt.getName();
- strtemp = strPath + "/" + gbkPath;
-
-
- String strsubdir = gbkPath;
- for(int i = 0; i < strsubdir.length(); i++) {
- if(strsubdir.substring(i, i + 1).equalsIgnoreCase("/")) {
- String temp = strPath + "/"
- + strsubdir.substring(0, i);
- File subdir = new File(temp);
- if(!subdir.exists())
- subdir.mkdir();
- }
- }
-
- FileOutputStream fos = new FileOutputStream(strtemp);
- BufferedOutputStream bos = new BufferedOutputStream(fos);
- int c;
- while((c = bis.read()) != -1) {
- bos.write((byte) c);
- }
- bos.close();
- fos.close();
- }
- }
- } catch(Exception e) {
- e.printStackTrace();
- throw e;
- }
- }
- }
分享到:
相关推荐
标题中的"C++ zip解压缩"指的是使用C++编程语言来处理ZIP文件格式,这是一种广泛使用的文件打包和压缩格式。ZIP文件可以将多个文件和目录组合到一个单一的档案文件中,并且可以进行压缩以节省存储空间。C++库提供了...
本篇文章将详细介绍如何在UCOS系统中移植ZLIB库以及实现ZIP文件的解压缩。 首先,ZLIB是一个开源的压缩库,它提供了数据的无损压缩和解压缩功能,常用于GIF、PNG等文件格式。移植ZLIB到UCOS涉及到以下几个关键步骤...
【标题】:“zip压缩解压缩”这一主题主要涵盖了在计算机编程中如何使用C++语言进行ZIP文件的压缩和解压缩操作。ZIP是一种广泛使用的文件格式,它允许将多个文件打包成一个单一的压缩文件,以节省存储空间和提高传输...
本篇文章将深入探讨C语言实现的zip解压缩算法源代码,以及与之相关的技术知识点。 首先,我们要了解zip文件格式。Zip是一种广泛使用的文件压缩标准,它能够将多个文件打包成一个单一的压缩文件,便于存储和传输。在...
标题和描述中提到的“unity解压缩zip包可用dll”,是指在Unity中用于解压缩ZIP文件的动态链接库(DLL)文件。 DLL(Dynamic Link Library)是Windows操作系统中的一个关键组件,它包含可由多个程序同时使用的代码和...
本话题主要聚焦于如何利用ant.jar来解压缩ZIP包。首先,你需要确保你的项目中已经引入了ant.jar。这通常可以通过Maven或Gradle等构建工具添加依赖来实现。如果你的项目不使用这些工具,你可以将ant.jar作为库文件...
ZIP包格式是计算机领域中广泛使用的文件压缩和归档格式,由菲尔·卡茨在1989年创建。它允许用户将多个文件和目录组合到一个单一的ZIP文件中,便于存储、传输和分享。ZIP文件格式不仅支持数据压缩,还支持文件的加密...
本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...
本文将详细介绍如何使用CZip和CUnzip类来处理文件的压缩与解压缩任务。 首先,我们需要了解CZip和CUnzip类的基本概念。CZip类提供了创建、打开、添加、删除和提取ZIP文件的功能,而CUnzip类则负责从ZIP文件中提取...
提供zip解压缩工具安装包,在客户内网环境下,通常无法联网,无法使用yum安装zip,此时可以使用rpm安装包进行安装 1.将此资源包放到服务器 2.解压之后进入文件夹 3.rpm -Uvh *.rpm --nodeps --force 命令进行安装
本话题主要围绕"基于C/C++的zip压缩解压缩"进行深入探讨。 标题中的"C/C++ zip压缩解压缩"是指使用C或C++编程语言来实现对ZIP文件格式的处理。ZIP是一种广泛使用的文件归档格式,它允许将多个文件和目录打包成一个...
ZIP包解压缩时,JDK自带的工具类不能解压缩带有中文名的文件,这个工具类对其作了简要修改,可以将此jar引用至项目中运行即可,用法参考文章: http://blog.csdn.net/adreamer_bj/article/details/6926036
在解压缩方面,我们需要打开已存在的ZIP文件,然后读取其中的每个部分(PackagePart),将其内容写入到目标文件。以下是一个VB.NET解压缩的示例: ```vb.net Imports System.IO.Packaging Module UnzipDemo Sub ...
在C#编程环境中,处理zip文件的解压缩是一项常见的任务,尤其在数据传输、存储优化或者应用程序资源管理中。本文将深入探讨如何使用C#来解压缩只能包含一级目录的zip文件,以及涉及的相关知识点。 首先,我们需要...
1. 可以将任意一个目录压缩成一个zip文件,包含密码 2. 可以将任意一个zip文件,加压到一个目录中,该目录位于当前执行文件所在目录的Unzip目录中,目录结构... 兼容三方的压缩解压缩文件。 带有演示程序以及原代码
你可以使用`TZipFile.Create`方法来创建一个新的`TZipFile`实例,然后通过`Add`方法将文件添加到ZIP档案中,或者使用`ExtractToFile`方法将ZIP内的文件解压缩到指定位置。例如: ```delphi uses System.Zip; var ...
### VBS 脚本实现 ZIP 文件的压缩与解压缩 在日常工作中,我们经常会遇到需要对文件进行压缩或解压缩的情况。对于批量处理任务,使用脚本语言可以大大提高效率。Visual Basic Script(VBS)作为Windows环境中的一种...
在Delphi编程环境中,处理ZIP文件的压缩与解压缩任务时,可以借助第三方库VCLZip。VCLZip是一个强大的组件集,它提供了方便的API,使得开发者可以在Delphi应用程序中轻松实现对ZIP文件的操作。下面我们将详细探讨...
总的来说,这份WinCE ZIP压缩解压缩源代码为开发者提供了一个实用的工具,通过研究和理解源代码,不仅可以掌握ZIP文件处理的基本原理,还可以了解到在有限资源环境下C++编程的一些技巧。同时,这也是一个很好的学习...
"UE引擎解压缩zip格式文件插件"就是为了应对这种需求而设计的工具。 这个插件主要针对UE4和UE5引擎,允许开发者在游戏中直接解压ZIP格式的文件,而无需预先手动解压。这样可以极大地提高开发效率,特别是对于那些...