GZIP接口非常简单,所以如果只有单个数据流需要压缩(而不是一系列不同的数据),那么它就可能是最适当选择。下面是对单个文件进行压缩的例子:

//: GZIPcompress.java
// Uses Java 1.1 GZIP compression tocompress
// a file whose name is passed on thecommand
// line.
import java.io.*;
import java.util.zip.*;
 
public class GZIPcompress {
  public static void main(String[] args) {
    try {
     BufferedReader in =
       new BufferedReader(
         new FileReader(args[0]));
     BufferedOutputStream out =
       new BufferedOutputStream(
         new GZIPOutputStream(
            newFileOutputStream("test.gz")));
     System.out.println("Writingfile");
      int c;
      while((c = in.read()) != -1)
       out.write(c);
     in.close();
     out.close();
     System.out.println("Readingfile");
      BufferedReaderin2 =
       new BufferedReader(
         new InputStreamReader(
           new GZIPInputStream(
             new FileInputStream("test.gz"))));
     String s;
      while((s = in2.readLine()) != null)
       System.out.println(s);
    } catch(Exception e) {
     e.printStackTrace();
    }
  }
///:~



压缩类的用法非常直观——只需将输出流封装到一个GZIPOutputStream或者ZipOutputStream内,并将输入流封装到GZIPInputStream或者ZipInputStream内即可。剩余的全部操作就是标准的IO读写。然而,这是一个很典型的例子,我们不得不混合使用新旧IO流:数据的输入使用Reader类,而GZIPOutputStream的构建器只能接收一个OutputStream对象,不能接收Writer对象。

 

来自 http://www.57itsq.com/read.php?tid-1558.html