Java 1.1实现了I/O数据流与网络数据流的单一接口,因此数据的压缩、网络传输和解压缩的实现比较容易,一个zip文件由多个entry组成,每个entry有一个唯一的名称,entry的数据项存储压缩数据。实现zip数据压缩三个主要Java类是ZipEntry、ZipInputStream和ZipOutputStream。
·类ZipEntry
public ZipEntry(String name);
name为指定的数据项名。
·类ZipOutputStream
ZipOutputStream实现了zip压缩文件的写输出流,支持压缩和非压缩entry。下面是它的几个函数:
public ZipOutputStream(OutputStream out);
∥利用输出流out构造一个ZIP输出流。
public void setMethod(int method);
∥设置entry压缩方法,缺省值为DEFLATED。
public void putNextEntry(ZipEntry newe);
∥如果当前的entry存在且处于激活状态时,关闭它,在zip文件中写入新的entry-new,并将数据流定位于entry数据项的起始位置,压缩方法为setMethod指定的方法。
·类ZipInputStream
ZipInputStream实现了zip压缩文件的读输入流,支持压缩和非压缩entry。下面是它的几个函数:
public ZipInputStream(InputStream in);
∥利用输入流in构造一个ZIP输出流。
public ZipEntry getNextEntry();
∥返回ZIP文件中的下一个entry,并将输出流定位在此entry数据项的起始位置。
public void closeEntry();
∥关闭当前的zip entry,并将数据流定位于下一个entry的起始位置。
对于要加入压缩档的每一个文件,都必须调用putNextEntry(),并将其传递给一个ZipEntry对象。ZipEntry对象包含了一个功能全面的接口,使用它可以获得和设置Zip文件内那个特定的Entry(入口)上能够接受的所有数据:名字、压缩后和压缩前的长度、日期、CRC校验和、额外字段的数据、注释、压缩方法,以及它是否为一个目录入口等。
为解压文件,ZipInputStream提供一个getNextEntry()方法,能返回一个ZipEntry。也可以用ZipFile对象读取文件,该对象有一个entries()方法,可以为ZipEntry返回一个Enumeration。