ZipEntry、ZipInputStream和ZipOutputStream三个Java类实现zip数据压缩方式的编程方法。
zip压缩文件结构:一个zip文件由多个entry组成,每个entry有一个唯一的名称,entry的数据项存储压缩数据。
与zip文件有关的几个Java类
・类ZipEntry
public ZipEntry(String name);
name为指定的数据项名。
・类ZipOutputStream
ZipOutputStream实现了zip压缩文件的写输出流,支持压缩和非压缩entry。下面是它的几个函数:
public ZipOutputStream(OutputStream out);
∥利用输出流out构造一个ZIP输出流。
public void setMethod(int method);
∥设置entry压缩方法,缺省值为DEFLATED。
public void putNextEntry(ZipEntry newe);
∥如果当前的entry存在且处于激活状态时,关闭它,在zip文件中写入新的entry-newe
并将数据流定位于entry数据项的起始位置,压缩方法为setMethod指定的方法。
・类ZipInputStream
ZipInputStream实现了zip压缩文件的读输入流,支持压缩和非压缩entry。下面是它的
几个函数:
public ZipInputStream(InputStream in);
∥利用输入流in构造一个ZIP输出流。
public ZipEntry getNextEntry();
∥返回ZIP文件中的下一个entry,并将输出流定位在此entry数据项的起始位置。
public void closeEntry();
∥关闭当前的zip entry,并将数据流定位于下一个entry的起始位置。
需要导入ant.jar包
下面是压缩的:
package org.cfsdc.action; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import org.apache.struts2.ServletActionContext; public class Test { public static void main(String[] args) throws Exception { String inputpath = "D:\\zipTest"; String zipOutpath = "D:\\ziptest.zip"; zipTest(inputpath,zipOutpath); unZip ( "D:\\ziptest.zip" , "D://opt" ); } private static void zipTest(String inputpath, String zipFile) throws IOException { ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile)); File inputpathFile = new File(inputpath); if(inputpathFile.exists() && inputpathFile.isDirectory()){ File[] inputs = inputpathFile.listFiles(); for(File i :inputs){ out.putNextEntry(new ZipEntry(i.getName())); getZip(i.getAbsoluteFile(),out); } } out.flush(); out.close(); } private static void getZip(File absoluteFile, ZipOutputStream out) throws IOException { InputStream input = new FileInputStream(absoluteFile);//这里只能输入文件 byte[] buffer = new byte[2048]; int len=-1; while((len=input.read(buffer))!= -1){ out.write(buffer, 0, len); } } }
下面是解压的方法
/** * 解压 */ public static void unZip(String zipfile, String destDir) { destDir = destDir.endsWith( "//" ) ? destDir : destDir + "//" ; byte b[] = new byte [1024]; int length; ZipFile zipFile; try { zipFile = new ZipFile( new File(zipfile)); Enumeration enumeration = zipFile.getEntries(); ZipEntry zipEntry = null ; while (enumeration.hasMoreElements()) { zipEntry = (ZipEntry) enumeration.nextElement(); File loadFile = new File(destDir + zipEntry.getName()); if (zipEntry.isDirectory()) { // 这段都可以不要,因为每次都貌似从最底层开始遍历的 loadFile.mkdirs(); } else { if (!loadFile.getParentFile().exists()) loadFile.getParentFile().mkdirs(); OutputStream outputStream = new FileOutputStream(loadFile); InputStream inputStream = zipFile.getInputStream(zipEntry); while ((length = inputStream.read(b)) > 0) outputStream.write(b, 0, length); } } System. out .println( " 文件解压成功 " ); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
相关推荐
java压缩解压ZIP
解压ZIP文件的过程相对简单,主要使用`ZipInputStream`和`FileOutputStream`。以下是解压的基本步骤: 1. **创建`ZipInputStream`**:使用`FileInputStream`打开ZIP文件,然后传递给`ZipInputStream`。 2. **读取`...
这篇博客文章“Java压缩解压ZIP之Zip4j”可能详细介绍了如何使用Zip4j进行文件的压缩和解压缩操作。 首先,我们需要了解Zip4j库的核心概念。Zip4j提供了一个名为`ZipFile`的类,它代表一个ZIP文件,包含了所有与ZIP...
`ZipOutputStream`用于创建ZIP文件,而`ZipInputStream`则用于读取和解压ZIP文件。为了添加密码保护,我们需要在创建`ZipOutputStream`时设置一个密码。 1. **密码保护**:在压缩过程中,可以使用`ZipEntry`对象来...
在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...
本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...
用Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....
以上代码示例展示了如何使用Java的`java.util.zip`包创建和解压ZIP文件。这些工具类可以作为通用的ZIP操作函数库,适用于各种项目需求。注意,实际应用中可能需要添加错误处理和日志记录以增强健壮性。同时,对于大...
Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...
### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....
NULL 博文链接:https://zhenyong.iteye.com/blog/1576148
本文将深入探讨如何使用Java来解压ZIP格式的压缩包,并提供相关的源码参考。 首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`...
总的来说,Java的`java.util.zip`包为处理压缩文件提供了强大的支持,包括ZIP和JAR格式。通过创建如`CompressFileUtils`这样的工具类,我们可以方便地实现文件的解压缩操作,这对于处理资源文件、打包应用或在网络上...
总结来说,"java Zip压缩解压"涉及了Java标准库中的`java.util.zip`包,用于创建和读取ZIP文件;Apache Ant作为构建工具,可能用于自动化压缩和解压过程;而JUnit则用于编写和运行测试,确保代码的正确实现。在实际...
而解压ZIP文件,可以使用`unzip()`方法: ```java File sourceZip = new File("input.zip"); File destinationDir = new File("destination"); ZipUtils.unzip(sourceZip, destinationDir); ``` 以上代码片段展示...
`ZipOutputStream` 用于创建ZIP文件,而 `ZipInputStream` 则用于读取和解压ZIP文件。以下是一个简单的压缩示例: ```java import java.io.*; import java.util.zip.*; public class ZipUtil { public static ...
`FileUtils.java`类是这个功能的具体实现,它封装了上述的压缩和解压过程,使开发者能够轻松地在代码中调用这些功能。理解并掌握这些知识,对于进行Java相关的文件操作和数据打包工作至关重要。
java 文件zip 压缩与解压 可以直接调用
在Java编程中,处理文件压缩和解压是常见的任务,特别是使用ZIP格式。然而,当涉及到包含中文字符的文件或目录时,可能会遇到乱码问题。这个问题主要源于字符编码的不一致,通常需要正确设置字符集来确保中文字符在...
解压ZIP文件的过程相对简单: - 使用`ZipFile`打开ZIP文件。 - 遍历`ZipFile`的所有条目(`ZipEntry`)。 - 对于每个条目,创建一个`FileOutputStream`,指定目标解压路径。 - 创建`ZipInputStream`,基于`...