Chapter 9. Compressing Streams
The java.util.zip
package, shown in Figure 9.1, contains six stream classes and another half
dozen assorted classes that read and write data in zip, gzip, and
inflate/deflate formats. Java uses these classes to read and write
JAR archives and to display PNG images. You can use the
java.util.zip
classes as general utilities for
general-purpose compression and decompression. Among other things,
these classes make it trivial to write a simple file
compression or
decompression program.
Figure 9-1. The java.util.zip package hierarchy
Inflaters and Deflaters
The
java.util.zip.Deflater
and
java.util.zip.Inflater
classes provide compression and
decompression services for all other classes. They are Java’s
compression and decompression engines. These classes support several
related compression
formats,
including zlib, deflate, and gzip. These formats are documented in
RFCs 1950, 1951, and 1952. (See ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html)
They all use the Lempel-Ziv 1977 (LZ77) compression algorithm (named after the inventors, Jakob Ziv and Abraham Lempel), though each has a different way of storing metadata that describes an archive’s contents. Since compression and decompression are extremely CPU-intensive operations, for the most part these classes are Java wrappers around native methods written in C. More precisely, these are wrappers ...
Get Java I/O now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.