热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

170814、Java使用gzip压缩文件、还原文件

packagecom.rick.utils;importjava.io.*;importjava.util.zip.GZIPInputStream;importjava.util
package com.rick.utils;

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

/********************************************************
 *@Desc: gizp工具类
 *@Author: ZRP
 *@Date: 2017/11/9 9:31
 ********************************************************/
public class GzipUtil {

    /**
     * @Desc :  gzip压缩
     * @Author : ZRP
     * @Params: [data]
     * @Return: byte[]
     * @Date : 2017/11/9 9:43
     */
    public static byte[] gzip(byte[] data) throws Exception {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        GZIPOutputStream gzip = new GZIPOutputStream(bos);
        gzip.write(data);
        gzip.finish();
        gzip.close();
        byte[] ret = bos.toByteArray();
        bos.close();
        return ret;
    }


    /**
     * @Desc :  gzip解压缩
     * @Author : ZRP
     * @Params: [data]
     * @Return: byte[]
     * @Date : 2017/11/9 9:47
     */
    public static byte[] ungzip(byte[] data) throws Exception{
        ByteArrayInputStream bis = new ByteArrayInputStream(data);
        GZIPInputStream gzip = new GZIPInputStream(bis);
        byte[] buf = new byte[1024];
        int num = -1;
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        while ((num = gzip.read(buf, 0, buf.length)) != -1){
            bos.write(buf, 0, num);
        }
        gzip.close();
        bis.close();
        byte[] ret = bos.toByteArray();
        bos.flush();
        bos.close();
        return ret;
    }

    /**
     * 测试压缩和还原
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception{
        //读取文件
        String readPath = System.getProperty("user.dir") + File.separatorChar + "sources" + File.separatorChar + "001.jpg";
        File file = new File(readPath);
        FileInputStream in = new FileInputStream(file);
        byte[] data = new byte[in.available()];
        in.read(data);
        in.close();
        System.out.println("文件原始大小:" + data.length);

        //测试压缩
        byte[] ret1 = GzipUtil.gzip(data);
        System.out.println("压缩之后大小:" + ret1.length);
        byte[] ret2 = GzipUtil.ungzip(ret1);
        System.out.println("还原之后大小:" + ret2.length);


        //写出文件
        String writePath = System.getProperty("user.dir") + File.separatorChar + "receive" +  File.separatorChar + "001.jpg";
        FileOutputStream fos = new FileOutputStream(writePath);
        fos.write(ret2);
        fos.close();

    }

}

 


推荐阅读
author-avatar
胸膛舒畅_736
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有