1、了解压缩流的主要作用
2、了解JAVA IO 支持的三种压缩格式
3、掌握ZipOutputStream、ZipFile、ZipInputStream 三个类的作用
具体内容
经常可以看见各种压缩文件:zip、jar、GZ、
正常情况下在IO 操作中,所有的类库都是在 IO 包中。
在实例化ZipEntry 的时候,要设置名称,此名称实际上就是压缩文件中每一个元素的名称。
1、ZipOutputStream
此类的功能就是完成ZIP格式输出的。
继承关系:
java.lang.Object java.io.OutputStream java.io.FilterOutputStream java.util.zip.DeflaterOutputStream java.util.zip.ZipOutputStream
从定义可以发现,就是一个字节的输出流。
public void putNextEntry(ZipEntry e) throws IOException在压缩文件中,每一个压缩的内容都可以用一个ZipEntry 表示,所以在进行压缩之前必须通过putNextEntry 设置一个ZipEntry 即可。
ZipFile 在实例化的时候必须接收File 类的实例。此File 类的实例是指向一个压缩 *.zip 文件。
第一步:为 ZipFile 实例
1. 实例化时需要接收File 类的引用
2. 通过ZipFile 文件,为mldn.zip 进行解压缩操作。
定义:
java.lang.Object java.io.InputStream java.io.FilterInputStream java.util.zip.InflaterInputStream java.util.zip.ZipInputStream
ZipFile 对象,可以找到每一个ZipEntry 的输入流。但是ZipInputStream 并不能得到每一个输入流,所以需要使用ZipFile,但是ZipInputStream 在取得每一个ZipEntry 的时候,不需要每一个ZipEntry 的时候,不需要每一个ZipEntry 的名称。
总结:
1、压缩文件中的每一个压缩实体都使用ZipEntry 保存,一个压缩文件中可能包含一个或多个的ZipEntry 对象。
2、在JAVA中可以进行zip、jar、gz、三种格式的压缩支持,操作流程基本上是一样的
3、ZipOutputStream 可以进行压缩输出,但是输出的位置不一定是文件。
4、ZipFile 表示每一个压缩文件,可以得到每一个压缩实体的输入流
5、ZipInputStream 可以得到每一个实体,但是却无法得到每一个实体的输入流。
6. JDK中的ZipInputStream与ZipOutputStream 在压缩与解压缩操作中容易出现乱码,建议大家使用Apache的ZipInputStream与ZipOutputStream,因为它可以设置字
符编码charset,这样就能够保证在写入/读取文件时,最大限度的避免乱码问题的发生!