Java Gzip压缩与解压

package component;

import org.testng.annotations.Test;

import java.io.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

public class TestGZip {

    @Test
    public void testGZip() throws IOException {


                //做准备压缩一个字符文件,这里的字符文件是UTF-8编码方式的。注意使用字符流而不是字节流的原因:字节流不能设置读取时候的编码,
            //字符流可以设置读取时候使用的编码
                BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(
                        "D:\\IDEAworkspace\\testComponent\\src\\main\\resources\\zipsource\\source.txt"), "UTF-8"));
        //使用GZIPOutputStream包装OutputStream流,使其具体压缩特性,最后会生成test.txt.gz压缩包
                BufferedOutputStream out = new BufferedOutputStream(new GZIPOutputStream(
                        new FileOutputStream("D:\\IDEAworkspace\\testComponent\\src\\main\\resources\\zipsource\\test.txt.gz")));
                System.out.println("开始写压缩文件...");
                int c;
                //每次循环读取一个字符的数据,并写一个字符的数据到压缩包中。
                while ((c = in.read()) != -1) {
                    out.write(String.valueOf((char) c).getBytes("UTF-8"));
                }
                in.close();
                out.close();


                System.out.println("开始读压缩文件...");
                //使用GZIPInputStream包装InputStream流,使其具有解压特性
                BufferedReader in2 = new BufferedReader(new InputStreamReader(
                        new GZIPInputStream(new FileInputStream("D:\\IDEAworkspace\\testComponent\\src\\main\\resources\\zipsource\\test.txt.gz")), "UTF-8"));
                String s;
                //以行为单位来读取压缩文件里的内容
                while ((s = in2.readLine()) != null) {
                    System.out.println(s);
                }
                in2.close();


    }
}

 

参考:https://www.cnblogs.com/visec479/p/4112881.html

posted @ 2019-01-28 15:40  贾de明  阅读(3162)  评论(0编辑  收藏  举报