Zip

Short & Quick introduction

数据压缩概述

Java提供了java.util.zip包用来兼容ZIP格式的数据压缩。

表 1. java.util.zip

条目 类型 描述
Checksum 接口 被类Adler32和CRC32实现的接口
Adler32 使用Alder32算法来计算Checksum数目
CheckedInputStream 一个输入流,保存着被读取数据的Checksum
CheckedOutputStream 一个输出流,保存着被读取数据的Checksum
CRC32 使用CRC32算法来计算Checksum数目
Deflater 使用ZLIB压缩类,支持通常的压缩方式
DeflaterOutputStream 一个输出过滤流,用来压缩Deflater格式数据
GZIPInputStream 一个输入过滤流,读取GZIP格式压缩数据
GZIPOutputStream 一个输出过滤流,读取GZIP格式压缩数据
Inflater 使用ZLIB压缩类,支持通常的解压方式
InlfaterInputStream 一个输入过滤流,用来解压Inlfater格式的压缩数据
ZipEntry 存储ZIP条目
ZipFile 从ZIP文件中读取ZIP条目
ZipInputStream 一个输入过滤流,用来读取ZIP格式文件中的文件
ZipOutputStream 一个输出过滤流,用来向ZIP格式文件口写入文件
DataFormatException 异常类 抛出一个数据格式错误
ZipException 异常类 抛出一个ZIP文件

ZIP文件属性

表格 2. 类 ZipEntry 中一些有用的方法

方法签名 描述
public String getComment() 返回条目的注释, 没有返回null
public long getCompressedSize() 返回条目压缩后的大小, 未知返回-1
public int getMethod() 返回条目的压缩方式,没有指定返回 -1
public String getName() 返回条目的名称
public long getSize() 返回未被压缩的条目的大小,未知返回-1
public long getTime() 返回条目的修改时间, 没有指定返回-1
public void setComment(String c) 设置条目的注释
public void setMethod(int method) 设置条目的压缩方式
public void setSize(long size) 设置没有压缩的条目的大小
public void setTime(long time) 设置条目的修改时间

求和校验

java.util.zip包中另外一些比较重要的类是 Adler32CRC32,它们实现了 java.util.zip.Checksum 接口,并估算了压缩数据的校验和(Checksum)。

压缩对象

  • Employee

  • SaveEmployee

  • ReadEmployee

如何对JAR文件进行操作呢?

Java档案文件(JAR)格式是基于标准的ZIP文件格式,并附有可选择的文件清单列表。可以使用java.util.jar包。

References