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

    }

}
时间: 2024-11-09 00:44:34

170814、Java使用gzip压缩文件、还原文件的相关文章

IIS7.5打开GZip压缩,同时启用GZip压缩JS/CSS文件的设置方法[bubuko.com]

IIS7.5或者IIS7.0开启GZip压缩方法:打开IIS,在右侧点击某个网站,在功能视图中的“IIS”区域,双击进入“压缩”,如图下图: 分别勾选“启用动态内容压缩”和“启用静态内容压缩”.这样最通用的设置GZip压缩就完成了. 静态内容压缩和动态内容压缩的区别静态内容压缩:压缩的静态响应可以缓存到磁盘上,供多个请求使用,同时不会降低 CPU 资源的性能.对于下一个请求,可以从磁盘检索压缩文件,由于 CPU 不必再次压缩文件,从而提高了性能. 动态内容压缩:压缩动态应用程序响应会影响 CPU

Linux命令(十八) 压缩或解压缩文件和目录 gzip gunzip

目录 1.命令简介 2.常用参数介绍 3.实例 4.直达底部 命令简介 和 zip 命令类似,gzip 用于文件的压缩,gzip压缩后的文件扩展名为 ".gz",gzip默认压缩后会删除源文件. gunzip用于解压经过 gzip 压缩过的文件. 返回目录 常用参数介绍 一.gzip 常用参数说明 -d 对压缩文件进行解压 -r 递归压缩指定目录及其子目录下的所有文件 -t 检查压缩文件的完整性 -v 对于每个压缩和解压缩的文档,显示相应的文件名和压缩比 -l 显示压缩文件的压缩信息

Java知多少(73)文件的压缩处理

Java.util.zip 包中提供了可对文件的压缩和解压缩进行处理的类,它们继承自字节流类OutputSteam 和 InputStream.其中 GZIPOutputStream 和 ZipOutputStream 可分别把数据压缩成 GZIP 和 Zip 格式,GZIPInpputStream 和 ZipInputStream 又可将压缩的数据进行还原. 将文件写入压缩文件的一般步骤如下: 生成和所要生成的压缩文件相关联的压缩类对象. 压缩文件通常不只包含一个文件,将每个要加入的文件称为一

Java使用Zip压缩文件或整个目录

1.压缩文件或整个目录 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.util.zip.ZipEntry

linux gzip(压缩文件或者目录)

减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip不仅可以用来压缩大的.较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式.据统计,gzip命令对文本文件有60%-70%的压缩率. 1.命令格式: gzip[参数][文件或者目录] 2.命令功能: gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多

iis7 压缩js文件和启用gzip压缩

压缩js文件 打开IIS 7的配置文件:c:\windows\system32\inetsrv\config\applicationhost.config 在<staticContent lockAttributes="isDocFooterFileName">中添加: <remove fileExtension=".js" /><mimeMap fileExtension=".js" mimeType="

修复损坏的gzip压缩文件之原理篇

引言:UNIX/LINUX下大多数都是用gzip格式来做文件的压缩方案的,而gzip文件损坏的情况也屡见不鲜,常见的有遇到坏扇区.压缩进程io阻塞,或恢复后的压缩文件被破坏等.因近期有做关于gzip文件的修复研究,特分为三个篇章对此成果进行表述,分别为原理篇,方法篇,案例篇.此为第一部分原理篇. gzip的压缩算法本质上是deflate(zip也几乎都用),这个算法其实是由LZ77算法加上一个变形的哈夫曼编码组成的.大概算法流程是:"原始数据--->LZ77--->哈夫曼 "

apache 配置静态文件缓存和开启gzip压缩

1,设置文件静态缓存3天: 在httpd.conf 里添加如下代码: #文件静态缓存配置 <IfModule expires_module> #打开缓存 ExpiresActive on #文件缓存259200/3600/24=3天 ExpiresByType text/css A259200 ExpiresByType application/x-javascript A259200 ExpiresByType application/javascript A259200 ExpiresBy

【转】Java压缩和解压文件工具类ZipUtil

特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/ 1 package com.utility.zip; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.File; 6 import jav