170814、Java使用gzip壓縮文件、還原文件


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();

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM