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文件的路径。
IO流-ZIP文档的更多相关文章
- 笔记:I/O流-ZIP文档
ZIP文档以压缩格式存储了一个或多个文件,每个ZIP文档都有一个头,包含诸如每个文件名字和所使用的压缩方法等信息,在 Java 中可以使用 ZipInputStream 来读入ZIP 文档,getNe ...
- I/O流、ZIP文档
1) ZIP文档通常以压缩格式存储一个或多个文档.在Java中可以用ZipInputStream读入ZIP文档(即解压文件流),用ZipOutputStream写入ZIP文档(即压缩文件流),无论解压 ...
- 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档
.net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...
- 【.NET深呼吸】Zip文件操作(2):动态生成Zip文档
通过前面一篇烂文的介绍,大伙儿知道,ZipArchive类表示一个zip文档实例,除了用上一篇文章中所列的方法来读写zip文件外,还可以直接通过ZipArchive类,动态生成zip文件. 文件流操作 ...
- HTML+CSS基础 块级元素div分析 文档流 脱离文档流的方法
块级元素div分析 1.外边距 margin 2.内边距 padding 3.边框 border Div的真实宽度=width+margin-left+margin-right+border*2+ ...
- java IO流 Zip文件操作
一.简介 压缩流操作主要的三个类 ZipOutputStream.ZipFile.ZipInputStream ,经常可以看到各种压缩文件:zip.jar.GZ格式的压缩文件 二.ZipEntry ...
- JAVA如何解压缩ZIP文档
代码片段: package org.yu.units; import java.io.Closeable; import java.io.File; import java.io.FileInputS ...
- 10.2 io流 之字节流和字符流
FileWriter 用于写入字符流.要写入原始字节流,请考虑使用 FileOutputStream. io流相关文档: https://www.cnblogs.com/albertrui/p/836 ...
- 文档流 css中间float clear和布局
文档流 先说说什么是公文流转 什么流 它是一系列连续的东西 <div style="background-color:pink;width:40px;height:80px;&quo ...
随机推荐
- <Operating System>进程调度
在多道程序环境下,进程数目往往多于处理机数目,致使它们争用处理机.这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行.分配处理机的任务是由进程调度程序完成的. 三级调度 一个 ...
- How to create Web Deployment Package and install the package
Create Web Deployment Package To configure settings on the Connection tab In the Publish method drop ...
- 小游戏runpig总结
前几天写了一个JavaScript小游戏,大概是这样的 demo:strongfanfan.top/RunPig 源代码:www.github.com/strongfanfan/RunPig 画风简 ...
- iOS开发零基础--Swift教程 字典
字典的介绍 字典允许按照某个键来访问元素 字典是由两部分集合构成的,一个是键(key)集合,一个是值(value)集合 键集合是不能有重复元素的,而值集合是可以重复的,键和值是成对出现的 Swift中 ...
- VIM使用(三)
Vim自动补全神器:YouCompleteMe Ubuntu下,先通过Bundle安装插件: Bundle 'Valloric/YouCompleteMe'Bundle 'scrooloose/syn ...
- iOS开发--Block
iOS开发--Block 1.什么是Block,block 的作用 ui开发和网络常见功能实现回调,按钮的事件处理方法是回调方法以及网络下载后的回调处理 (1)按钮 target-action 一 ...
- [转]Git - 重写历史
转自http://git-scm.com/book/zh/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2 重写历史 很多时 ...
- unity发布安卓 手指控制物体缩放和旋转
直接帮到物体的身上就可以了 using UnityEngine; using System.Collections;using System.IO;public class hehe : MonoBe ...
- Swift-ImageView响应点击事件
随着Swift语言的不断更新迭代,纯Swift语言编写的代码更加紧凑简单,结合StoryBorad的使用,使开发苹果APP的门槛降低了不少.个人也是比较推荐使用Interface Builder去生成 ...
- Cron表达式备忘
Cron表达式(在Quartz.net里面会用到) 由7段构成:秒 分 时 日 月 星期 年(可选)"-" :表示范围 MON-WED表示星期一到星期三"," ...