Data Compression
The java.util.zip package
contains classes you can use for data compression in streams or files. The
classes in the java.util.zip package
support two widespread compression formats: GZIP and ZIP. In this section,
we’ll talk about how to use these classes. We’ll also present two useful
example programs that build on what you have learned in this chapter.
After that, we’ll talk about a higher-level way to work with ZIP
archives—as filesystems—introduced with Java 7.
Archives and Compressed Data
The java.util.zip
package provides two filter streams for writing compressed data. The
GZIPOutputStream is for
writing data in GZIP compressed format. The ZIPOutputStream is for
writing compressed ZIP archives, which can contain one or many files. To
write compressed data in the GZIP format, simply wrap a GZIPOutputStream around an underlying stream
and write to it. The following is a complete example that shows how to
compress a file using the GZIP format, but the stream could just as well
be sent over a network connection or to any other type of stream
destination. Our GZip example is a
command line utility that compresses a file.
importjava.io.*;importjava.util.zip.*;publicclassGZip{publicstaticintsChunk=8192;publicstaticvoidmain(String[]args){if(args.length!=1){System.out.println("Usage: GZip source");return;}// create output streamStringzipname=args[0]+".gz";GZIPOutputStreamzipout;try{FileOutputStreamout=newFileOutputStream(zipname ...