码迷,mamicode.com
首页 > 编程语言 > 详细

ThinkJava-压缩

时间:2017-09-04 22:44:43      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:reader   blog   test   操作   工具   redo   对象   简单   print   

技术分享

尽管存在许多种压缩算恙,但是Zip和GZIP可能是最常用的.因此我们可以很容易地使用多
种可读写这些格式的工具来操纵我们的压缩数据。
 
1 用GZIP进行简单压缩
GZIP接口非常简单, 因此如果我们只想对单个数据流(而不是一系列互异数据)进行压缩,
那么它可能是比较适合的选择。下面是对单个文件进行压缩的例子:
技术分享
// {Args: GZIPcompress.java}
package com.java.io;

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

public class GZIPcompress {
      public static void main(String[] args) throws IOException {
        if(args.length == 0) {
          System.out.println(
            "Usage: \nGZIPcompress file\n" +
            "\tUses GZIP compression to compress " +
            "the file to test.gz");
          System.exit(1);
        }
        BufferedReader in = new BufferedReader(new FileReader(args[0]));
        BufferedOutputStream out = new BufferedOutputStream(
                                          new GZIPOutputStream(
                                            new FileOutputStream("test.gz")));
        System.out.println("Writing file");
        int c;
        while((c = in.read()) != -1){
            out.write(c);
        }
        in.close();
        out.close();
        System.out.println("Reading file");
        BufferedReader in2 = new BufferedReader(
                                  new InputStreamReader(new GZIPInputStream(
                                    new FileInputStream("test.gz"))));
        String s;
        while((s = in2.readLine()) != null){
            System.out.println(s);
        }
        in2.close();
      }
}
View Code
压缩类的使用非常直观一一直接将输出流封装成GZlPOutputStream或ZipOutputStream,并将
输入流封装成GZIPInputStream或ZipInputStream即可。其他全部操作就是通常的IO读写。这个例
子把面向字符的流和面向字节的流棍合了起来,输入(in ) 用Reader类,而GZIPOutputStream的
构造器只能接受OutputStream对象,不能接受Writer对象。在打开文件时, GZIPInputStream就会
被转换成Reader.
 
2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-----------

ThinkJava-压缩

标签:reader   blog   test   操作   工具   redo   对象   简单   print   

原文地址:http://www.cnblogs.com/tenWood/p/7475879.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!