`
sunlifan05
  • 浏览: 71970 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ZIP包解压缩

阅读更多

一个ZIP压缩包解压的代码,使用了ANT.JAR包解决了解压过程中的中文问题

由于解压后,中文目录名的前一半是用ISO5586-1编码的  后一半是用UTF-8的

所以用一半的编码转换难以实现

java 代码
  1. import java.io.BufferedInputStream;   
  2. import java.io.BufferedOutputStream;   
  3. import java.io.File;   
  4. import java.io.FileOutputStream;   
  5. import java.io.InputStream;   
  6. import org.apache.tools.zip.ZipEntry;   
  7. import org.apache.tools.zip.ZipFile;   
  8. public class FileUnit {   
  9. public void unzipFile(String zipFileName) throws Exception {   
  10.         try {   
  11.                 File f = new File(zipFileName);   
  12.                 ZipFile zipFile = new ZipFile(zipFileName);   
  13.                 if((!f.exists()) && (f.length() <= 0)) {   
  14.                         throw new Exception("要解压的文件不存在!");   
  15.                 }   
  16.                 String strPath, gbkPath, strtemp;   
  17.                 File tempFile = new File(f.getParent());   
  18.                 strPath = tempFile.getAbsolutePath();   
  19.                 java.util.Enumeration e = zipFile.getEntries();   
  20.                 while(e.hasMoreElements()) {   
  21.                         org.apache.tools.zip.ZipEntry zipEnt = (ZipEntry) e.nextElement();   
  22.                         gbkPath=zipEnt.getName();   
  23.                         if(zipEnt.isDirectory()) {   
  24.                                 strtemp = strPath + "/" + gbkPath;   
  25.                                 File dir = new File(strtemp);   
  26.                                 dir.mkdirs();   
  27.                                 continue;   
  28.                         } else {   
  29.                                 //读写文件   
  30.                                 InputStream is = zipFile.getInputStream(zipEnt);   
  31.                                 BufferedInputStream bis = new BufferedInputStream(is);   
  32.                                 gbkPath=zipEnt.getName();   
  33.                                 strtemp = strPath + "/" + gbkPath;   
  34.   
  35.                                 //建目录   
  36.                                 String strsubdir = gbkPath;   
  37.                                 for(int i = 0; i < strsubdir.length(); i++) {   
  38.                                         if(strsubdir.substring(i, i + 1).equalsIgnoreCase("/")) {   
  39.                                                 String temp = strPath + "/"  
  40.                                                         + strsubdir.substring(0, i);   
  41.                                                 File subdir = new File(temp);   
  42.                                                 if(!subdir.exists())   
  43.                                                         subdir.mkdir();   
  44.                                         }   
  45.                                 }   
  46.   
  47.                                 FileOutputStream fos = new FileOutputStream(strtemp);   
  48.                                 BufferedOutputStream bos = new BufferedOutputStream(fos);   
  49.                                 int c;   
  50.                                 while((c = bis.read()) != -1) {   
  51.                                         bos.write((byte) c);   
  52.                                 }   
  53.                                 bos.close();   
  54.                                 fos.close();   
  55.                         }   
  56.                 }   
  57.         } catch(Exception e) {   
  58.                 e.printStackTrace();   
  59.                 throw e;   
  60.         }   
  61.     }   
  62. }  
分享到:
评论

相关推荐

    C++ zip解压缩压缩

    标题中的"C++ zip解压缩"指的是使用C++编程语言来处理ZIP文件格式,这是一种广泛使用的文件打包和压缩格式。ZIP文件可以将多个文件和目录组合到一个单一的档案文件中,并且可以进行压缩以节省存储空间。C++库提供了...

    ucos移植zlib和zip文件解压缩

    本篇文章将详细介绍如何在UCOS系统中移植ZLIB库以及实现ZIP文件的解压缩。 首先,ZLIB是一个开源的压缩库,它提供了数据的无损压缩和解压缩功能,常用于GIF、PNG等文件格式。移植ZLIB到UCOS涉及到以下几个关键步骤...

    zip压缩解压缩

    【标题】:“zip压缩解压缩”这一主题主要涵盖了在计算机编程中如何使用C++语言进行ZIP文件的压缩和解压缩操作。ZIP是一种广泛使用的文件格式,它允许将多个文件打包成一个单一的压缩文件,以节省存储空间和提高传输...

    C语言zip解压缩算法源代码

    本篇文章将深入探讨C语言实现的zip解压缩算法源代码,以及与之相关的技术知识点。 首先,我们要了解zip文件格式。Zip是一种广泛使用的文件压缩标准,它能够将多个文件打包成一个单一的压缩文件,便于存储和传输。在...

    unity解压缩zip包可用dll。net3.5;net4.0。亲测PC可用,移动端可用。

    标题和描述中提到的“unity解压缩zip包可用dll”,是指在Unity中用于解压缩ZIP文件的动态链接库(DLL)文件。 DLL(Dynamic Link Library)是Windows操作系统中的一个关键组件,它包含可由多个程序同时使用的代码和...

    利用ant.jar解压缩zip包

    本话题主要聚焦于如何利用ant.jar来解压缩ZIP包。首先,你需要确保你的项目中已经引入了ant.jar。这通常可以通过Maven或Gradle等构建工具添加依赖来实现。如果你的项目不使用这些工具,你可以将ant.jar作为库文件...

    ZIP包格式压缩/解压缩

    ZIP包格式是计算机领域中广泛使用的文件压缩和归档格式,由菲尔·卡茨在1989年创建。它允许用户将多个文件和目录组合到一个单一的ZIP文件中,便于存储、传输和分享。ZIP文件格式不仅支持数据压缩,还支持文件的加密...

    java android zip解压缩(解决压缩中文乱码问题)

    本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...

    linux离线安装zip解压缩工具rpm安装包

    提供zip解压缩工具安装包,在客户内网环境下,通常无法联网,无法使用yum安装zip,此时可以使用rpm安装包进行安装 1.将此资源包放到服务器 2.解压之后进入文件夹 3.rpm -Uvh *.rpm --nodeps --force 命令进行安装

    c/c++zip压缩解压缩

    本话题主要围绕"基于C/C++的zip压缩解压缩"进行深入探讨。 标题中的"C/C++ zip压缩解压缩"是指使用C或C++编程语言来实现对ZIP文件格式的处理。ZIP是一种广泛使用的文件归档格式,它允许将多个文件和目录打包成一个...

    VC++ MFC 如何用 CZip CUnzip类压缩解压缩文件

    本文将详细介绍如何使用CZip和CUnzip类来处理文件的压缩与解压缩任务。 首先,我们需要了解CZip和CUnzip类的基本概念。CZip类提供了创建、打开、添加、删除和提取ZIP文件的功能,而CUnzip类则负责从ZIP文件中提取...

    解压缩带有中文名文件的ZIP包的工具类

    ZIP包解压缩时,JDK自带的工具类不能解压缩带有中文名的文件,这个工具类对其作了简要修改,可以将此jar引用至项目中运行即可,用法参考文章: http://blog.csdn.net/adreamer_bj/article/details/6926036

    VB.NET使用ZipPackage实现ZIP文件压缩解压缩示例

    在解压缩方面,我们需要打开已存在的ZIP文件,然后读取其中的每个部分(PackagePart),将其内容写入到目标文件。以下是一个VB.NET解压缩的示例: ```vb.net Imports System.IO.Packaging Module UnzipDemo Sub ...

    C# zip文件解压缩

    在C#编程环境中,处理zip文件的解压缩是一项常见的任务,尤其在数据传输、存储优化或者应用程序资源管理中。本文将深入探讨如何使用C#来解压缩只能包含一级目录的zip文件,以及涉及的相关知识点。 首先,我们需要...

    Delphi实现Zip压缩/解压缩

    你可以使用`TZipFile.Create`方法来创建一个新的`TZipFile`实例,然后通过`Add`方法将文件添加到ZIP档案中,或者使用`ExtractToFile`方法将ZIP内的文件解压缩到指定位置。例如: ```delphi uses System.Zip; var ...

    vbs压缩和解压zip,vbs压缩zip,vbs解压zip

    ### VBS 脚本实现 ZIP 文件的压缩与解压缩 在日常工作中,我们经常会遇到需要对文件进行压缩或解压缩的情况。对于批量处理任务,使用脚本语言可以大大提高效率。Visual Basic Script(VBS)作为Windows环境中的一种...

    delphi中进行zip压缩解压缩

    在Delphi编程环境中,处理ZIP文件的压缩与解压缩任务时,可以借助第三方库VCLZip。VCLZip是一个强大的组件集,它提供了方便的API,使得开发者可以在Delphi应用程序中轻松实现对ZIP文件的操作。下面我们将详细探讨...

    WinCE ZIP 压缩解压缩源代码

    总的来说,这份WinCE ZIP压缩解压缩源代码为开发者提供了一个实用的工具,通过研究和理解源代码,不仅可以掌握ZIP文件处理的基本原理,还可以了解到在有限资源环境下C++编程的一些技巧。同时,这也是一个很好的学习...

    UE引擎解压缩zip格式文件插件

    "UE引擎解压缩zip格式文件插件"就是为了应对这种需求而设计的工具。 这个插件主要针对UE4和UE5引擎,允许开发者在游戏中直接解压ZIP格式的文件,而无需预先手动解压。这样可以极大地提高开发效率,特别是对于那些...

    标准zip压缩解压缩DLL库

    标题中的“标准zip压缩解压缩DLL库”指的是一个动态链接库(Dynamic Link Library,简称DLL),它是Windows操作系统中的一种共享库,包含了一系列用于处理ZIP格式压缩和解压缩的函数。DLL库的优势在于可以让多个程序...

Global site tag (gtag.js) - Google Analytics