IO流-ZIP文档

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文件的路径。

时间: 2024-08-06 22:47:21

IO流-ZIP文档的相关文章

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

.net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile.表示与一个zip文件操作相关的类.可以使用该类创建zip文件,或者打开zip文件. 2.ZipArchive.表示一个zip文档实例,可以通过它直接从流对象创建zip文档.ZipFile类主要是针对磁盘文件来进行操作,而ZipArchive表示的是zip包,不一定是存放在硬盘上的.zip文件,因为

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

通过前面一篇烂文的介绍,大伙儿知道,ZipArchive类表示一个zip文档实例,除了用上一篇文章中所列的方法来读写zip文件外,还可以直接通过ZipArchive类,动态生成zip文件. 文件流操作相信.net dev们不会陌生,ZipArchive既可以在内存中创建zip文档,也可以创建到新的zip文件中.因为ZipArchive类的构造函数需要传入一个Stream对象来读写,这个Stream可以是内存的流,当然也可以是文件流. 创建ZipArchive实例后,直接调用CreateEntry

python暴力破解加密zip文档

由参加的一个安全大赛来的.flag文件在一个加密的zip文件里面,密钥为6-8位的数字.写了个python脚本进行暴力解压缩. 运行速度还挺快,如下是运行结果:

从文档流认识html

写html,css的同学应该需要清楚什么是文档流.文档流:将窗体自上而下分成一行一行,并在每行中按从左至右的挨次排放元素,即为文档流. 每个非浮动块级元素都独有一行, 浮动元素则按规则浮在行的一端. 若当时行容不下, 则另起新行再浮动.内联元素也不会独有一行. 一切元素(包括块级,内联和列表元素)均可生成子行, 用于摆放子元素.有三种状况将使得元素离开文档流而存在,分别是浮动.绝对定位.固定定位.然则在IE中浮动元素也存在于文档流中. 浮动元素不占任何正常文档流空间,而浮动元素的定位照样基于正常

CSS总结篇—熟悉而陌生的文档流

文档流 我相信,在大家刚学css的时候,一定对这个名词熟悉而又陌生.在查阅了相关资料后,总结了下对文档流的认识. 文档流定义:将窗体自上而下分成一行一行,并在每行中按从左至右的挨次排放元素,即为文档流 每个非浮动块级元素都独有一行, 浮动元素则按规则浮在行的一端. 若当时行容不下, 则另起新行再浮动.内联元素也不会独有一行. 一切元素(包括块级,内联和列表元素)均可生成子行, 用于摆放子元素.有三种状况将使得元素离开文档流而存在,分别是浮动.绝对定位.固定定位.然则在IE中浮动元素也存在于文档流

float/文档流

float : left | right | none | inherit; 文档流是文档中可显示对象在排列时所占用的位置. 浮动的定义: 使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来. clear : left | right | both | none | inherit; 元素的某个方向上不能有浮动元素.clear:both;在左右两侧均不允许浮动元素. 清除浮动方法 加高度    问题:扩展性不好 <!DOCTYPE html> <html>

文档流 css中间float clear和布局

文档流 先说说什么是公文流转  什么流 它是一系列连续的东西 <div style="background-color:pink;width:40px;height:80px;">第一个框 </div> <div style="background-color:red;width:40px;height:80px;">第二个框 </div> <div style="background-color:ye

文档流 css中的float clear与布局

文档流 先说说什么是文档流  流是什么 就是一串连续的东西 <div style="background-color:pink;width:40px;height:80px;">第一个框 </div> <div style="background-color:red;width:40px;height:80px;">第二个框 </div> <div style="background-color:yel

WPF 流文档

WPF文本显示: WPF面向的是UI展现,而文本显示无疑是UI层中的重要功能之一.WPF提供了XPS (XML 文件规范) 和Flow Document (流文档) 来在不同的场景下展现或者操作文档的显示.XPS(XML 文件规范)针对打印和面向页面的内容,而"流文档"则针对屏幕显示以及提供更动态和可以论证的更复杂模型."流文档"几乎适用于与文本内容相关的所有方面,从产品说明到整本书籍. Flow Document是WPF3.0中提供的一个用于显示的新功能,它给了开