`

java io操作----压缩文件

阅读更多
在java.util.zip包中,定义了多种类型用于创建和读取zip压缩格式的文件,主要有ZipEntry,ZipInputStream,ZipOutputStream三个类。

java包中还有一个ZipFile类,利用它可以从压缩格式文件中读取原始文件的入口,即在解压缩zip文件时会用到
package zip;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

//zip是windows平台下常用的压缩文件,gzip是unix平台下常用的
public class ZipSample {

	private final int BUFFER_SIZE = 1024;

	public static void main(String[] args) {

		File zip = new File("c:\\test.zip");
		File[] files = new File[3];
		files[0] = new File("D:\\holen.xml");
		files[1] = new File("D:\\holen2.xml");
		files[2] = new File("D:\\downloads\\XPath.chm");
		ZipSample sample = new ZipSample();
		sample.zip(zip, files); // 将files打包至zip文件

		File zipFile = new File("c:\\test.zip");
		sample.readZipFile(zipFile); // 读取zip文件

	}

	public void zip(File zipFile, File[] zippedFiles) { // 将zippedFiles打包到zipFile的zip文件即压缩文件
		try {
			byte[] buffer = new byte[BUFFER_SIZE];
			FileOutputStream fs = new FileOutputStream(zipFile);
			ZipOutputStream zo = new ZipOutputStream(fs);

			for (int i = 0; i < zippedFiles.length; i++) {
				if (zippedFiles[i] == null || !zippedFiles[i].exists()
						|| zippedFiles[i].isDirectory())
					continue;
				// 添加每个原始文件的入口
				ZipEntry zipAdd = new ZipEntry(zippedFiles[i].getName());// zipEntry标示压缩文件中每一个原始文件的入口,具有唯一的名称
				zipAdd.setTime(zippedFiles[i].lastModified());
				zo.putNextEntry(zipAdd);

				FileInputStream in = new FileInputStream(zippedFiles[i]);
				while (true) {
					int nRead = in.read(buffer, 0, buffer.length); // 读取的字节数
					if (nRead <= 0) {
						break;
					}
					zo.write(buffer, 0, nRead);

				}
				in.close();
			}
			zo.close();
			fs.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void readZipFile(File file) { // 解压缩,用ZipFile类
		try {
			// 获取压缩文件中每一个原始文件的入口
			ZipFile zf = new ZipFile(file);
			Enumeration entries = zf.entries();
			// 从控制台获取用户输入
			BufferedReader input = new BufferedReader(new InputStreamReader(
					System.in));
			while (entries.hasMoreElements()) {
				ZipEntry ze = (ZipEntry) entries.nextElement();
				System.out.println("Read " + ze.getName() + "?");
				String inputLine = input.readLine();
				if (inputLine.equalsIgnoreCase("y")) {
					long size = ze.getSize();
					if (size > 0) {
						// 解压输出指定的原始文件
						BufferedReader br = new BufferedReader(
								new InputStreamReader(zf.getInputStream(ze)));
						String line;
						while ((line = br.readLine()) != null) {
							System.out.println(line);
						}
						br.close();
					}
				} // if "y"
			}// while
		} catch (ZipException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}


该程序执行后会在c盘下生产出一个test.zip文件
分享到:
评论

相关推荐

    java-unrar-0.3

    总之,Java-unrar-0.3是一个实用的工具,让Java开发者能够轻松地在各种平台上处理RAR文件,而无需依赖于特定操作系统的压缩工具。这个库简化了文件解压的过程,并且易于集成到现有的Java项目中,对于那些需要处理RAR...

    commons-fileupload-1.2.1.jar 和commons-io-1.4.jar

    Apache Commons FileUpload与Apache Commons IO是Java开发中处理文件上传的两个重要库,它们在Web应用中被广泛使用。这两个库分别提供了不同的功能,但在处理文件上传时常常一起使用。 `commons-fileupload-1.2.1....

    java解压rar 包含java-unrar-0.3.jar

    1. **RAR文件解析**:`java-unrar`库能够解析RAR文件头信息,获取文件名、压缩和未压缩大小、时间戳等元数据。 2. **文件提取**:你可以通过库提供的API指定RAR文件中的某个文件或目录进行提取,并保存到本地文件...

    java-unrar-decryption-supported

    总的来说,这个场景涉及到Java编程中的文件操作、压缩文件解压、加密算法应用等多个知识点。通过`java-unrar-decryption-supported-20120613.jar`和`gnu-crypto.jar`,我们可以编写Java程序,高效地处理RAR文件,...

    java压缩文件源码--ZipUtils

    // 设置压缩文件入口entry,为被读取的文件创建压缩条目 File tempFile = new File(fileArray[i].toString()); String rootStr = file.getPath(); String entryStr = null; // entry以相对路径的...

    commons-io-2.11.0.rar

    Apache Commons IO 是一个Java库,专门用于处理输入/输出(I/O)操作。这个库提供了大量的实用工具类,简化了常见的文件、流、过滤器、读写操作等任务。"commons-io-2.11.0.rar"是Apache Commons IO库的版本2.11.0的...

    javaIo操作的基础代码

    在Java中,IO操作涉及到文件、字节流、字符流以及管道流等多个概念。下面将详细解释这些知识点。 首先,我们来看“文件类”。在Java中,`java.io.File`类用于表示文件和目录路径名的抽象表示。它提供了创建、删除、...

    commons-io-1.4.rar源文件及jar文件

    Apache Commons IO 是一个Java库,专门用于处理输入/输出(I/O)操作。这个库提供了大量的工具类,扩展了Java标准库中关于I/O的功能,使得开发者在处理文件、流、字符转换、过滤器和读写操作时更加方便。在这个...

    commons-io-1.3.2-sources.jar

    Apache Commons IO 是一个 Java 类库,专门处理输入/输出流操作,提供了一系列实用工具类,极大地简化了 Java I/O 操作。在这个主题中,我们将深入探讨 `commons-io-1.3.2-sources.jar` 中的核心概念和功能。 首先...

    目录多文件上传-JAVA IO流常用详解

    本文将详细介绍一个Java程序中的功能模块——如何实现目录多文件上传,并利用Java IO流进行文件复制操作。该功能可以实现在用户选择一个目录后,自动扫描并上传该目录下的所有文件及其子文件夹,最终达到完整备份或...

    java-IO框架图

    例如,javaio.bmp和javaio2.bmp可能是两张展示IO框架图的图片,其中详细描绘了不同类之间的继承关系和使用场景,帮助开发者更好地理解和掌握Java IO系统。 总结一下,Java IO框架是Java平台不可或缺的一部分,它为...

    IO流 javaio java 流

    总的来说,Java的IO流体系结构复杂而强大,它提供了多种工具和策略来处理各种数据传输场景,包括文件操作、网络通信、对象序列化等。理解并熟练运用这些流可以帮助我们构建高效、可靠的Java应用程序。

    commons-io-2.5-src和commons-fileupload-1.3.1-bin

    标题中的"commons-io-2.5-src"和"commons-fileupload-1.3.1-bin"是两个在Java开发中常用的开源库,分别用于处理I/O操作和文件上传功能。 `commons-io-2.5-src`是Apache Commons IO库的源代码版本,它是一个Java实用...

    Java io的基本操作很全面的代码呀

    Java IO提供了丰富的类库,使得开发者能够处理各种类型的输入输出任务,包括文件操作、网络通信、流处理等。在这个“Java io的基本操作很全面的代码”项目中,我们可以看到一系列针对Java IO的实例,对于学习和理解...

    java IO.chm

    《Java IO.chm》是一个关于Java输入/输出(IO)技术的压缩文件,其中包含了丰富的资料,适合开发者深入理解和学习Java IO系统。这篇详细的总结将围绕Java IO体系结构、核心类、流的概念、缓冲区、转换流、字符集、...

    Java IO流 Zip文件的压缩和解压缩

    Zip文件格式是一种广泛使用的压缩格式,它允许将多个文件打包成一个单一的压缩文件。在Java中,我们可以使用java.util.zip包中的ZipOutputStream和ZipInputStream类来对Zip文件进行压缩和解压缩操作。 **压缩Zip...

    Java-Java IO编程教程

    在Java中,IO操作涉及到文件读写、网络通信、数据流管理等多个方面,是程序与外部世界交互的关键技术。本教程将通过视频形式,帮助你深入理解和掌握Java IO系统。 Java IO体系结构由多个类和接口组成,这些类和接口...

    java学习笔记之Java-IO操作共19页.pdf.zi

    Java IO API提供了一套丰富的类和接口,使得开发者可以方便地进行文件读写、网络通信、流处理等操作。 1. **基本概念** - 流(Stream):Java IO中的核心概念,代表数据的源或目标。流可以是字节流或字符流,分为...

    JAVA文件压缩与解压缩实践(源代码+论文)

    5. **文件操作**:在Java中,文件操作涉及`java.io`包,如`File`类用于文件的创建、删除和基本信息获取,而`BufferedInputStream`和`BufferedOutputStream`用于提高文件读写效率。 6. **流的概念**:在Java中,I/O...

    Java把文件压缩成zip

    ### Java将文件压缩为ZIP的方法 #### 知识点概览 本文主要介绍如何使用Java实现文件的ZIP压缩功能,并提供了完整的代码示例。通过学习本文,你可以掌握以下几个知识点: 1. 使用`java.util.zip`包中的类进行文件...

Global site tag (gtag.js) - Google Analytics