`

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压缩文件源码--ZipUtils

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

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

    用开源的FileUpload组件,可以很方便的给自己的系统添加功能强大的文件上传模块。 该资源文件是两个jar打包成的压缩文件。

    java源码包---java 源码 大量 实例

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    zip4j--Java操作zip压缩文件接口

    Java操作zip压缩格式的开源项目,功能强大而且使用方便,能完全满足Java操作Zip压缩文件,官方网址为:http://www.lingala.net/zip4j/ 可以下载到jar包、源码和示例,好像没有提供API文档。 不过需要使用代理访问...

    java-io-guide:Java中的Java IO(输入和输出流)指南

    这是Java中文件处理的完整指南。...从Java中的ZIP文件解压缩文件 目录 目录操作示例列表。 获取当前工作目录 建立目录 删除目录 复制目录 遍历/列出目录结构 检查目录是否为空 文件实用程序 Java F

    commons-io-2.6.zip jar包

    java jar包,亲测试可用 ...把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令来压缩,可以把一个或多个路径全部压缩成一个JAR文件。

    上传文件的jar包 commons-io commons-fileupload.jar

    使用这两个压缩文件中的Jar可以方便的上传文件到服务器上。 可以查看http://blog.csdn.net/cw_hello1/article/details/51444102网页

    commons-io-2.2.jar.zip

    java jar包,亲测试可用 ...把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令来压缩,可以把一个或多个路径全部压缩成一个JAR文件。

    JAVA_IO/NIO(demo,压缩jar文件)

    io/nio各种文件读写方法。文件压缩成jar包。

    如何使用servlet和commons-fileupload-1.2.1.jar和commons-io-2.4.jar两个jar包实现文件上传的功能

    本文件为一个MyEclipse工具开发的java web 工程压缩文件。本工程用于演示如何使用servlet和commons-fileupload-1.2.1.jar和commons-io-2.4.jar两个jar包实现文件上传的功能。

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

    NULL 博文链接:https://beijishiqidu.iteye.com/blog/1944225

    java流IO思维导图

    java流IO超详细使用,包含:怎么理解流,输出输入流,6个重要的方法,架构体系,分类,java做压缩程序的代码等等。。。。

    plexus-io-1.0.1.jar.zip

    java jar包,亲测试可用 ...把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令来压缩,可以把一个或多个路径全部压缩成一个JAR文件。

    java算法,实现压缩及解压缩

    Java实现压缩与解压缩ZIP  import java.io.BufferedInputStream;  import java.io.BufferedOutputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;...

    java httpServletResponse返回流进行 下载 - 姐呵呵博客专栏 - CSDN博客1

    摘要视图订阅分类:java_web学习第四天(request和response的学习)Java输入输出流java压缩多个文件并且返回流示例Java中IO流文件读

    java将文件夹压缩成zip,解压zip压缩包

    java控制指定路径下的文件夹压缩成zip格式。 java将zip压缩包解压成为文件夹。直接使用io流进行操作,不需借助其他jar包

    java 解压缩目录下的所有文件

    java 解压缩目录下的所有文件 需要用的ant.jar 可以解决中文乱码问题

    Java实现文件的压缩和解压

    基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...

    Java试下制定文件的复制,压缩功能

    Java试下制定文件的复制,压缩功能,类中方法有制定文件的复制,及对制定文件下所有文件的制定位置压缩,生成压缩zip文件

    java 获取文件的真实类型依赖.zip

    java 获取文件的真实类型(不是根据文件的后缀名称判断类型) commons-io-2.6.jar commons-lang-2.6.jar

Global site tag (gtag.js) - Google Analytics