IO-压缩流

xiaoxiao2021-02-27  169

一,本章目标

①了解压缩流的主要作用

②了解Java  IO支持的三种压缩格式

③掌握ZipOutputStream,ZipFile,ZipInputStream三个类的作用

二,具体内容

经常可以看见各种压缩文件:zip,jar,gz。

正常情况下,在IO操作中,所有的类库都在IO包中。

注意:实例化ZipEntry的时候,要设置名称,这个名称实际上就是压缩文件中每一个元素的名称。

2.1   ZipOutputStream

此类的功能就是完成ZIP格式输出的。此类是一个字节的输出流。

在压缩文件中,每一个压缩文件的内容都可以用一个ZipEntry来表示,所以在进行压缩之前必须通过putNextEntry设置一个ZipEntry。

以上的代码只是完成了一个文件的压缩,如果一个文件夹呢?分析如下:

示例代码:

3.2  ZipFile类

ZipFile类在实例化的时候必须接收一个File类的实例,此File类的实例是指向一个压缩的*.zip文件。

第一步:为ZipFile实例化

第二步:通过ZipFile文件,为mldb.zip文件进行解压操作。

以上的操作有一个问题:必须知道压缩文件中的每一个压缩实体的名称,才可以进行解压缩操作,假设现在是一文件夹呢?

这就需要了解ZipInputStream类的定义。

2.3   ZipInputStream

此类是InputStream的子类。构造方法需要接受一个InputStream的实例化对象。不用输入实体名称,就可以得到每一个实体的名称,例如次特性,并结合ZipFile就可以完成解压文件夹的功能。ZipFile对象可以找到每一个ZipEntry的输入流,但是ZipInputStream不能得到每一个的输入流,但是ZipInputStream在取得每一个ZipEntry的时候,不需要每一个ZipEntry的名称。

对于文件夹的解压,一定要注意目录问题,如果目录不存在,则要进行创建操作。

三,总结

1.压缩文件中的每一个压缩实体都使用ZipEntry保存,一个压缩文件中可能包含一个或多个ZipEntry对象

2.java支持zip,jar,gz三种格式的压缩操作,操作流程基本上是一样的

3.ZipOOutputStream可以进行压缩输出,但是输出的并不一定是文件

4.ZipFile表示每一个压缩文件,可以得到每一个压缩实体的输入流

5.ZipInputStream可以得到每一个实体,但是不能得到压缩输入流

转载请注明原文地址: https://www.6miu.com/read-13396.html

最新回复(0)