import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.zip.GZIPOutputStream; import java.util.zip.ZipInputStream; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; public class ZipUtil { static void createDir(String path) { File dir = new File(path); if (dir.exists() == false) dir.mkdir(); } static String getSuffixName(String name) { return name.substring(0, name.lastIndexOf(".")); } public static void unzip(File src, File dstDir) throws IOException { ZipFile zipFile = null; try { // 创建zip文件对象 //zipFile = new ZipFile(src); if(System.getProperty("os.name").toLowerCase().indexOf("windows") >= 0){ zipFile = new ZipFile(src,"GBK"); }else if(System.getProperty("os.name").toLowerCase().indexOf("linux") >= 0){ //zipFile = new ZipFile(src,"GB2312"); zipFile = new ZipFile(src,"GBK"); } // 得到zip文件条目枚举对象 Enumeration zipEnum = zipFile.getEntries(); // 定义输入输出流对象 // 定义对象 ZipEntry entry = null; // 循环读取条目 while (zipEnum.hasMoreElements()) { // 得到当前条目 entry = (ZipEntry) zipEnum.nextElement(); String entryName = new String(entry.getName()); // 用/分隔条目名称 String names[] = entryName.split("\\/"); int length = names.length; String path = dstDir.getAbsolutePath(); for (int v = 0; v < length; v++) { if (v < length - 1) { // 最后一个目录之前的目录 path += "/" + names[v] + "/"; createDir(path); } else { // 最后一个 if (entryName.endsWith("/")) // 为目录,则创建文件夹 createDir(dstDir.getAbsolutePath() + "/" + entryName); else { InputStream input = null; OutputStream output = null; try {// 为文件,则输出到文件 input = zipFile.getInputStream(entry); output = new FileOutputStream(new File(dstDir.getAbsolutePath() + "/" + entryName)); byte[] buffer = new byte[1024 * 8]; int readLen = 0; while ((readLen = input.read(buffer, 0, 1024 * 8)) != -1) output.write(buffer, 0, readLen); // 关闭流 output.flush(); } finally { if (input != null) input.close(); if (output != null) output.close(); } } } } } } finally { if (zipFile != null) zipFile.close(); } } public static void unzip(String zipFilePath, String unzipDirectory) throws Exception { // 创建文件对象 File file = new File(zipFilePath); // 创建本zip文件解压目录 File unzipFile = new File(unzipDirectory); if (unzipFile.exists()) unzipFile.delete(); unzipFile.mkdir(); unzip(file, unzipFile); } public static byte[] unZip(byte[] data) { byte[] b = null; try { ByteArrayInputStream bis = new ByteArrayInputStream(data); ZipInputStream zip = new ZipInputStream(bis); while (zip.getNextEntry() != null) { byte[] buf = new byte[1024]; int num = -1; ByteArrayOutputStream baos = new ByteArrayOutputStream(); while ((num = zip.read(buf, 0, buf.length)) != -1) { baos.write(buf, 0, num); } b = baos.toByteArray(); baos.flush(); baos.close(); } zip.close(); bis.close(); } catch (Exception ex) { ex.printStackTrace(); } return b; } public static byte[] gZip(byte[] data) { byte[] b = null; try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(bos); gzip.write(data); gzip.finish(); gzip.close(); b = bos.toByteArray(); bos.close(); } catch (Exception ex) { ex.printStackTrace(); } return b; } public static void main(String[] args) throws Exception { // unzip("F:/aaaaaaaa.zip", "F:"); // System.out.println("over...................."); String a = "hellp aa bb cc"; System.out.println(a.lastIndexOf("he")); } }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩
这个资源包包含了处理zip、gzip和tar等压缩格式的类,提供了方便的方法来完成这些工作。以下是对这些知识点的详细说明: 1. **PHP**:PHP(PHP:Hypertext Preprocessor)是一种开源的服务器端脚本语言,广泛用于...
在本篇中,我们将深入探讨如何使用Java API来实现ZIP文件的解压缩,以及可能需要用到的第三方库。 首先,Java标准库(Java Standard Library)自身提供了对ZIP文件的支持。在`java.util.zip`包中,有两个关键类用于...
在这个场景中,我们提到的"java 自动解压缩"可能涉及到一个Java程序,它能够自动化地对ZIP或GZIP格式的压缩文件进行解压。此外,提到了`ant.jar`,这是Apache Ant工具的库,它是一个基于Java的任务执行框架,常用于...
这个名为"zip、unzip 解压缩工具 for C++、WIN32.zip"的资源提供了一个适用于Windows 32位系统的C++库,用于处理ZIP格式的压缩和解压缩操作。这个库可能包含了一系列的函数和示例代码,帮助开发者轻松地将这些功能...
网上很多描述java解压中文乱码的问题,很多描述不全.由于工作需要整理出一个完整版.... new ZipUtil().unZip("E:\\aaaa\\中文.zip","E:\\aaaa\\中文","GBK"); } 实例: 将E:\\aaaa\\中文.zip解压到E:\\aaaa\\中文目录下
《Unix解压缩工具Unzip5及其源码解析》 在信息技术领域,文件压缩与解压缩是日常工作中不可或缺的一部分。在Unix系统中,Unzip作为一款经典的解压缩工具,被广泛应用于处理.zip格式的压缩文件。本文将深入探讨Unzip...
《深入解析UNZIP解压缩软件的C源代码》 UNZIP是一款经典的开源解压缩软件,其C源代码具有很高的学习价值。本文将深入探讨UNZIP的实现原理,并通过分析源代码,揭示其在文件解压过程中的核心算法和技术细节。 一、...
### Java算法:实现压缩及解压缩 #### 一、压缩功能实现 在Java中实现文件压缩功能主要依赖于`java.util.zip`包中的类。以下是对压缩代码的详细解析: ##### 1. 导入所需类库 ```java import java.io....
在给定的标题“C++ 压缩解压缩库”中,我们可以推断这是一个针对C++语言的库,专注于文件或数据的压缩与解压缩功能。描述提到这是为VS2012版本编译的,意味着它可能使用了Visual Studio 2012的编译环境,并且库已经...
Java 提供了内置的支持来完成文件的压缩与解压缩操作,这些功能主要通过 `java.util.zip` 区域内的类实现。 #### 二、Zip 相关类介绍 - **ZipOutputStream**:用于创建 zip 压缩文件。 - **ZipEntry**:表示 zip ...
本文将详细讲解如何使用Java进行Zip文件的压缩与解压缩操作,并结合给定的标签"源码"和"工具"来探讨实际应用场景。 一、Java Zip压缩 1. 使用`ZipOutputStream`类进行压缩: `ZipOutputStream`是Java提供的用于...
`zip`命令用于压缩文件或目录,而`unzip`命令则用于解压缩zip文件。例如,你可以使用`zip -r archive_name .`来压缩当前目录及其所有子目录到一个名为archive_name的zip文件,`unzip archive_name`则可以解压这个zip...
10. **解压缩源码分析**:在提供的"java实现压缩与解压缩源码,demo分享.pdf"文件中,你可以找到具体的实现细节,包括如何打开和关闭流,如何处理文件条目,以及如何管理内存缓冲区等。 通过理解和应用这些知识点,...
Unix 压缩解压缩命令详解 Unix 操作系统中有多种压缩和解压缩命令,了解这些命令非常重要。本文将详细介绍 Unix 中常用的压缩格式和相应的压缩、解压缩命令。 tar 命令 tar 命令是 Unix 中最常用的打包命令,它...
为了在UCOS上实现ZIP解压,我们可以利用开源库,例如ZIP解压缩工具“unzip”。文件unzip101h可能是包含UNZIP库源代码的一个头文件。 1. 移植UNZIP库:如同ZLIB,我们需要对UNZIP库进行类似的配置和编译过程。这可能...
- 解压缩:`unzip 压缩后的文件名.zip`。 在选择合适的压缩工具时,需要考虑文件大小、压缩率、速度以及是否需要跨平台兼容性。在C编程中,开发者还可以通过调用这些工具的库函数来实现压缩和解压缩功能,例如使用...
在Java编程语言中,处理文件的压缩和解压缩任务是一项常见的需求。`zip`格式是一种广泛使用的文件归档格式,可以将多个文件和目录打包成一个单一的文件,便于存储和传输。`java.util.zip`是Java标准库提供的用于处理...
首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`ZipInputStream`和`ZipEntry`这两个类。`ZipInputStream`是用于读取ZIP文件的输入流...
C++ zip压缩解压缩源代码 压缩时调用 #include "zip.h" HZIP hz = CreateZip("c:\\simple1.zip",0); ZipAdd(hz,"znsimple.bmp", "c:\\simple.bmp"); ZipAdd(hz,"znsimple.txt", "c:\\simple.txt"); ...