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

转载于:https://www.cnblogs.com/JiaDeMin/p/10330481.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值