一,本章目标

①了解压缩流的主要作用

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

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





二,具体内容

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

IO-压缩流

IO-压缩流

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

IO-压缩流

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


2.1   ZipOutputStream

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

IO-压缩流

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

IO-压缩流

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

IO-压缩流

示例代码:

IO-压缩流


3.2  ZipFile类

IO-压缩流

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

第一步:为ZipFile实例化

IO-压缩流

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

IO-压缩流

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

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

2.3   ZipInputStream

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

IO-压缩流

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



三,总结

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

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

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

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

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




相关文章:

  • 2022-01-01
  • 2022-12-23
  • 2021-07-16
  • 2022-12-23
  • 2022-12-23
  • 2022-01-11
  • 2021-11-30
  • 2022-02-04
猜你喜欢
  • 2021-10-01
  • 2022-03-08
  • 2021-06-10
  • 2021-07-29
  • 2021-08-31
  • 2021-11-30
  • 2021-11-28
相关资源
相似解决方案