java中通常使用ZipInputStream来读ZIP文档

ZIP文档(通常)以压缩格式存储了一个或多个文件,每个ZIP文档都有一个包含诸如文件

名字和所使用的压缩方法等信息的头。在Java中,可以使用ZipInputStream来读入ZIP文档。

你可能需要浏览文档中每个单独的项,getNextEntry方法就可以返回一个描述这些项的

ZipEntry类型的对象。ZipInputStream的read方法被修改为在碰到当前项的结尾时返回-1

(而不是碰到ZIP文件的末尾) ,然后你必须调用closeEntry来读入下一项。下面是典型通读ZIP文件的代码序列:

ZipInputStream zip = new ZipInputStream(new FileInputStream("test.zip"));

ZipEntry entry;

// getNextEntry()为下一项返回ZipEntry对象,否则没有更多的项时返回null。

while((entry = zip.getNextEntry()) != null){

    // closeEntry()关闭这个ZIP文件中当前打开的项。之后可以通过使用        getNextEntry()读入下一项

    zip.closeEntry();

}

zip.close();    

当希望读入某个ZIP项的内容时,我们可能并不想使用原生的read方法,通常,我们将使用某个更能胜任的流过滤器的方法。例如,为了读入ZIP文件内部的一个文本文件,我们可以使用下面的循环:

Scanner s = new Scanner(zip);

while(s.hasNextLine()){

s.nextLine();

}

要写出到ZIP文件,可以使用ZipOutputStream,而对于你希望放入到ZIP文件中的每一项,

都应该创建一个ZipEntry对象,并将文件名传递给ZipEntry的构造器,它将设置其他诸如文件日期和解压缩方法等参数。如果需要,你可以覆盖这些设置。然后,你需要调用

ZipOutputStream的putNextEntry方法来开始写出新文件,并将文件数据发送到ZIP流中。当

完成时,需要调用closeEntry:

ZipOutputStream zip = new ZipOutputStream(new FileOutputStream("test.zip"));

ZipEntry ze1 = new ZipEntry("test1.txt");

ZipEntry ze2 = new ZipEntry("test2.txt");

// putNextEntry(ZipEntry ze)将给定的ZipEntry中的信息写出到流中,并定为用于写出数据的流,然后这些数据可以通过write()写出到这个流中

zip.putNextEntry(ze1);

zip.putNextEntry(ze2);

zip.closeEntry();

zip.close();

API:

Java.util.zip.ZipEntry

Java.util.zip.ZipFile

(1) ZipFile(String name)\ ZipFile(File file)

创建一个ZipFile,用于从给定的字符串或File对象中读入数据。

(2) Enumeration entries()返回一个Enumeration对象,它枚举了描述这个ZipFile中各个项的ZipEntry对象。

(3) ZipEntry getEntry(String name) 返回给定名字所对应的项,或者在没有对应项的时候返回null。

(4) InputStream getInputStream(ZipEntry ze) 返回用于给定项的InputStream。

(5) String getName()返回这个ZIP文件的路径。

IO流-ZIP文档的更多相关文章

  1. 笔记:I/O流-ZIP文档

    ZIP文档以压缩格式存储了一个或多个文件,每个ZIP文档都有一个头,包含诸如每个文件名字和所使用的压缩方法等信息,在 Java 中可以使用 ZipInputStream 来读入ZIP 文档,getNe ...

  2. I/O流、ZIP文档

    1) ZIP文档通常以压缩格式存储一个或多个文档.在Java中可以用ZipInputStream读入ZIP文档(即解压文件流),用ZipOutputStream写入ZIP文档(即压缩文件流),无论解压 ...

  3. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  4. 【.NET深呼吸】Zip文件操作(2):动态生成Zip文档

    通过前面一篇烂文的介绍,大伙儿知道,ZipArchive类表示一个zip文档实例,除了用上一篇文章中所列的方法来读写zip文件外,还可以直接通过ZipArchive类,动态生成zip文件. 文件流操作 ...

  5. HTML+CSS基础 块级元素div分析 文档流 脱离文档流的方法

    块级元素div分析 1.外边距  margin 2.内边距 padding 3.边框  border Div的真实宽度=width+margin-left+margin-right+border*2+ ...

  6. java IO流 Zip文件操作

    一.简介 压缩流操作主要的三个类 ZipOutputStream.ZipFile.ZipInputStream ,经常可以看到各种压缩文件:zip.jar.GZ格式的压缩文件 二.ZipEntry   ...

  7. JAVA如何解压缩ZIP文档

    代码片段: package org.yu.units; import java.io.Closeable; import java.io.File; import java.io.FileInputS ...

  8. 10.2 io流 之字节流和字符流

    FileWriter 用于写入字符流.要写入原始字节流,请考虑使用 FileOutputStream. io流相关文档: https://www.cnblogs.com/albertrui/p/836 ...

  9. 文档流 css中间float clear和布局

    文档流 先说说什么是公文流转  什么流 它是一系列连续的东西 <div style="background-color:pink;width:40px;height:80px;&quo ...

随机推荐

  1. Poj.Grids 2951 浮点数求高精度幂

    2951:浮点数求高精度幂 总时间限制: 1000ms 内存限制: 65536kB 描述 有一个实数 R ( 0.0 < R < 99.999 ) ,要求写程序精确计算 R 的 n 次方. ...

  2. Windows 安装 openssl

    http://slproweb.com/products/Win32OpenSSL.html File Type Description Win32 OpenSSL v1.1.0b Light 3MB ...

  3. Python-变量

    1.Python的变量是什么 变量是用来存储计算机程序中的信息,唯一的目的是将数据存储在内存中. 2.Python变量的组成 变量由字母.数字.下划线组成: 变量的第一位不能是数字,可以是字母或下划线 ...

  4. 解决ie8(及其以下)不支持getElementsByClassName的问题

    这篇技术笔记与大家分享的是:解决IE8(及以下)不支持getElementsByClassName的方法.如果有说错的地方,麻烦留言告诉我,我及时更正,一来是更新一下我的认知,二来也是不要误导的他人, ...

  5. php学习笔记2016.1

    基本类型    PHP是一种弱类型语言.      PHP类型检查函数   is_bool()    is_integer()  is_double()  is_string()   is_objec ...

  6. 使用Vs2012开发Metro时在另一台win8平板上调试的步骤

    需求:开发一个metro应用,因为要给平面设计师参谋, 需要将软件安装在win8平板上. 环境:开发机是win8,  win8平板是win8.1rtm , 是用老的win7平板改装的. 步骤: 1:拷 ...

  7. HTML5按钮的点击态问题

    开始在网页上实现点击态是mousedown mouseup来实现但是手机HTML5实现点击态怎么就不可以了呢 经过查资料才知道手机浏览器来实现点击态是通过 touchstart touchend实现

  8. 关于RPC与MQ异同的理解

    最近看了一些资料,回顾过去项目的经验,梳理自己对两者异同的理解: 相同: 1.都利于大型系统的解耦: 2.都提供子系统之间的交互,特别是异构子系统(如java\node等不同开发语言): 不同: 1. ...

  9. Aoite 系列(01) - 比 Dapper 更好用的 ORM

    Aoite 是一个适于任何 .Net Framework 4.0+ 项目的快速开发整体解决方案.Aoite.Data 适用于市面上大多数的数据库提供程序,通过统一封装,可以在日常开发中简单便捷的操作数 ...

  10. 今天心情好,一起探讨下《送给大家的200兆SVN代码服务器》怎么管理我们的VS代码?

    前几天给大家免费送了个200兆SVN代码服务器(今天心情好,给各位免费呈上200兆SVN代码服务器一枚,不谢!),还木有领取的速度戳链接哦! 好几位园友拿到SVN服务器都对其赞不绝口,我也用这个服务器 ...