java 使用gzip压缩和解压 传输文件必备

java web实现Gzip压缩传输 为了减少数据在网络中的传输量,从而减少传输时长,增加用户体验,浏览器大都是支持Gzip压缩技术的。http的请求头 Accept-Encoding:gzip, deflate 就表示这次请求可以接受Gzip压缩后的数据,但是这只表示客户端接受的数据可以是压缩数据,服务端具体要怎么实现压缩呢?我们就从代码层面讲解一下服务端实现压缩后的数据传输。 阅读详情

java gzip 压缩解压工具类,开箱即用
gzip原理看我另外一篇介绍
压缩效果直接看图:
在这里插入图片描述

package com.yeahmobi.datacheck.util;

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

public class CompressUtil {
    public static void main(String[] args) throws IOException {
    	// 原文件
        String inFileName = "D:\\response.xls";
        compressFile(inFileName);

		// 压缩文件
        //String gzFileName = "D:\\response.xls.gz";
        //doUncompressFile(gzFileName);
    }

    // 压缩
    public static void compressFile(String inFileName) throws IOException {
        FileInputStream in = null;
        GZIPOutputStream out = null;

        String outFileName = inFileName + ".gz";
        try {
            in = new FileInputStream(new File(inFileName));
        } catch (FileNotFoundException e) {
            throw new RuntimeException("文件不存在:" + inFileName);
        }
        out = new GZIPOutputStream(new FileOutputStream(outFileName));

        byte[] buf = new byte[10240];
        int len = 0;
        if (in != null && out != null) {
            try {
                while (((in.available() > 10240) && (in.read(buf)) > 0)) {
                    out.write(buf);
                }
                len = in.available();
                in.read(buf, 0, len);
                out.write(buf, 0, len);
                in.close();
                out.flush();
                out.close();
            } catch (IOException e) {
                throw new RuntimeException("压缩失败:" + inFileName);
            }
        }
        in.close();
        out.close();

    }

    // 解压
    public static void doUncompressFile(String inFileName) {
        try {
            if (!getExtension(inFileName).equalsIgnoreCase("gz")) {
                throw new RuntimeException("文件名必须是gz后缀");
            }

            GZIPInputStream in = null;
            try {
                in = new GZIPInputStream(new FileInputStream(inFileName));
            } catch (FileNotFoundException e) {
                throw new RuntimeException("文件不存在 " + inFileName);
            }

            String outFileName = getFileName(inFileName);
            try (FileOutputStream out = new FileOutputStream(outFileName);) {

                byte[] buf = new byte[1024];
                int len;
                while ((len = in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }

                in.close();
                out.close();
            } catch (FileNotFoundException e) {
                throw new RuntimeException("解压失败" + outFileName);
            }

        } catch (IOException e) {
            throw new RuntimeException("失败");
        }

    }
    
    // 获取文件后缀名
    public static String getExtension(String f) {
        String ext = "";
        int i = f.lastIndexOf('.');

        if (i > 0 && i < f.length() - 1) {
            ext = f.substring(i + 1);
        }
        return ext;
    }
    
    // 获取文件名
    public static String getFileName(String f) {
        String fname = "";
        int i = f.lastIndexOf('.');

        if (i > 0 && i < f.length() - 1) {
            fname = f.substring(0, i);
        }
        return fname;
    }
}

JAVA数据加密压缩传输给服务端(Gzip加AES) 上一话说到HTTP数据传输用Gzip方式压缩,用springboot分别写了客户端和服务端的代码测试。 对应博客地址 Java数据压缩HTTP方式传输Gzip(附带测试代码及springboot-HTTP客户端服务端代码) 本文场景: 在数据传输中,除了需要压缩数据大小,如果传输的是敏感数据,例如用户信息等,就需要加密。 本文用到的加密算法是AES 首先贴一下AESUtils工具类代码 package com.yolanda.mycompressclient.encrypt; import java.io 阅读详情

相关推荐

使用zlib实现gzip格式数据的压缩和解压

注意代码中的注释部分,这里设置是专门针对gzip的,缺少了就不行了,gzip压缩格式和其他格式的区别就在这里。 Bytef 就是 unsigned char,uLong就是 unsigned long,这些别名的设置都在zconf.h文件里面。这里压缩和解压缩的数据都可以用java的GZIPInputStream和GZIPOutputStream来对应解压缩和压缩。代码片 #ifndef GZIP

未语愁眸 9791

Java http gzip压缩_java中GZIP压缩解压类使用实例

java中GZIP压缩解压类使用实例当我们客户端与服务端进行数据传输时需要走流量,为了节省流量我们常常需要写一个压缩类对数据进行压缩。实例代码:import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.zip.GZIPInp...

weixin_39601641的博客 603

Java文件GZIP压缩与解压的源码实现

GZIP是一种广泛使用的数据压缩算法,它基于GNU zip项目,能够有效减少文件大小,常用于网络传输和数据存储的优化。在Java中,GZIP的实现允许开发者对文件进行高效的压缩和解压操作,以节约存储空间和加速数据在网络上的传输。这一章节我们将探讨GZIP在Java中的具体实现方式和使用场景。是处理ZIP文件时可能抛出的一个异常类。作为包的一部分,它继承自,特别用于标识ZIP操作过程中出现的错误。当涉及到文件压缩、解压缩操作时,常常需要对进行捕获和处理。

weixin_42576410的博客 770

HTTP方式传输Gzip(Java数据压缩)

场景: 客户端发送给服务端的数据过长,由于带宽受限及浏览速度的因素,需要压缩数据进行传输。 本文使用的压缩算法是Gzip,客户端压缩了以后再传输给服务端。 不是C到S,HTTP协议的两端也可以。 贴一下压缩的工具类CompressUtils package com.yolanda.myspringboot.compress; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.i

小靳哥@的博客 2195

国标Gb28181里Contact和Route的使用

国标Gb28181是基于Sip协议的,因此对Contact和Route的使用,也可以说是Sip里Contact和Route的使用。Contact和Route则是sip协议里的头字段。 现在,在使用国标Gb28181来做项目时,经常会遇到这种情况,国标的下级是在内网里,上级在公网上。如果不做处理,下级到上级会经过nat协议的转换从而导致上级向下级发送请求时(比如获取目录请求)不能到达

wwyyxx26的专栏 5512

QCM6490平台DDR测试:从QDUTT配置到眼图分析的实战指南

本文详细介绍了QCM6490平台DDR测试的全流程,从QDUTT工具安装配置到眼图分析,提供了实战操作指南和常见问题解决方案。通过具体案例分享,帮助工程师掌握DDR测试技巧,确保内存稳定性,特别适用于物联网和边缘计算设备的开发调试。

weixin_33910191的博客 459

asp.net mvc使用gzip压缩

Gzip最早由Jean-loup Gailly和Mark Adler创建,用于Unix系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是Gzip格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。 HTTP协议上的Gzip编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用Gzip压缩技术来让用户感受更快的速度。

c13_tianming的专栏 856

用C#和MQTTnet在WinForm里做个简易物联网监控后台(附完整源码)

本文详细介绍了如何使用C#和MQTTnet库在WinForm中构建一个简易物联网监控后台。通过实战案例,包括环境配置、MQTT服务端实现、客户端监控功能及高级优化技巧,帮助开发者快速搭建高效的物联网监控系统,适用于工业自动化和智能家居场景。

weixin_29540599的博客 393

分享一个Java使用GZIP压缩数据和文件的工具类

import org.apache.commons.io.IOUtils; import java.io.*; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; /** * @author lang.zhou * @date 2019/8/30 */ public class GZi...

qq_36635569的博客 795

SAP成本核算-事中控制(成本对象控制/成本归集与结算)

本文详细介绍了SAP系统中工单成本归集与结算的全流程管理。主要内容包括:1)工单成本三阶段归集(投料、报工、入库)的具体操作与计算方法;2)工单实际成本结算七步骤:从实际费用归集、成本分割、作业价格计算到差异结算的全过程;3)关键注意事项如测试运行验证、价格单位确认、无在制品处理等。通过标准价计算、实际作业重估等机制,系统实现了生产成本从计划到实际的精确核算,最终生成财务所需的差异结算凭证。所有操作均提供单工单和批量处理两种方式,满足不同业务场景需求。

小九啥也不会 1364

Claude Code 100个真实案例 - 用AI做数据可视化大屏(ECharts+实时数据)

数据报表看着枯燥?领导汇报缺少视觉冲击力?是时候做一个酷炫的数据可视化大屏了!本案例将用 Claude Code 从零搭建一个实时数据可视化大屏,使用 ECharts 实现折线图、柱状图、饼图、地图、仪表盘等多种图表,配合 WebSocket 实现秒级数据刷新,深色主题科技感拉满!

yueyeguzhuo的专栏 197

Java工具类:HttpUtil(HttpClient实现http的请求,获取响应)

(1)maven 依赖: <!-- HttpClinet 核心包 --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5....

小白一个 2万+

1998年高教社杯全国大学生数学建模竞赛 B 题:《灾情巡视路线》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 883

使用Java IO进行压缩和解压缩 | ZIP和GZIP的实现

Java IO中的压缩和解压缩功能主要通过包和方便易用。Java提供了简洁而易于使用的API,使得压缩和解压缩变得简单和方便。

devops 4765

代谢组数据分析(二十):通过WGCNA识别核心代谢物

本教程详细介绍了一种系统性的分析流程,旨在从复杂的代谢物数据中识别出关键的代谢物。这一流程首先通过精心设计的代谢物选择步骤,从大量候选代谢物中筛选出具有潜在生物学意义的子集。随后,利用WGCNA方法,对这些筛选后的代谢物进行深入分析,以构建它们的共表达网络,最终筛选出与研究目的相关的核心代谢物(hub metabolites)。

专注生信领域 3774

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java使用GZIP进行压缩和解压

附加java源码包下载地址网页GZIP压缩可以提高网页浏览速度,无论是之前在如何做网站课程中说的精简代码、图片无损压缩都不如启用Gzip来的实在。只要服务器开启了GZIP压缩,那么浏览器接收的就是压缩的内容,而开启网页压缩的目的是为了提高网络的传输速度,但会占用一些CPU资源,因为压缩内容需要CPU工作。先贴出代码package cn.filter; import java.io.ByteArra...

gentle!! 1490

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java压缩和解压缩Zip、Jar、Gzip文件

我们经常会使用WinZIP等压缩软件将文件进行压缩以方便传输。在java里面也提供了将文件进行压缩以减少传输时的数据量的类,可以很方便的将文件压缩成ZIP、JAR、GZIP等形式,GZIP主要是在Linux系统下的压缩文件。下面主要讲的就是ZIP形式的压缩文件,而JAR、GZIP形式的压缩文件也是类似的用法。ZIP是一种很常见的压缩形式,在java中要实现ZIP的压缩主要用到的是java.util

Elim的博客 7104

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

对字符串,字节数组进行GZIP压缩和解压缩

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.util.zip.DataFormatException; import java.util.zip.Deflater; import java.util.zip.GZIPInputStream; i

zxbcome的专栏 3918

【Linux】Ubuntu基础知识:常见压缩文件格式(tar、tar.gz、tar.bz2、zip、rar、7z等)的文件压缩和解压指南

在Linux Ubuntu系统中,处理文件压缩和解压是日常操作中的常见任务,可以帮助节省存储空间和简化文件传输。不同的文件格式有不同的优点和适用场景。本文将基于几种常用的文件压缩格式,包括tar、gzip、bzip2、zip、rar、7z等,介绍它们的使用方法。

科技改变人类,技术成就未来 6863

用GZIP进行压缩

GZIP是应用较为广泛的一种压缩方式。由于GZIP在压缩数据过程中采用多种类型的压缩算法,因此压缩比很高。GZIP压缩类的用法非常直观——只需将输出流封装到一个GZIPOutputStream或者ZipOutputStream内,并将输入流封装到GZIPInputStream或者ZipInputStream内即可。其他操作都属于标准的I/O读写。压缩文件压缩文件时首先将从文件输入流中得到的

wudaiwen1022的专栏 2551

关于Gzip压缩

一、Gzip gzip是GNUzip的缩写,最早用于UNIX系统的文件压缩。HTTP协议上的gzip编码是一种用来改进web应用程序性能的技术,web服务器和客户端(浏览器)必须共同支持gzip。目前主流的浏览器,Chrome,firefox,IE等都支持该协议。常见的服务器如Apache,Nginx,IIS同样支持gzip。 gzip压缩比率在3到10倍左右,可以大大节省服务器的网络带宽。而在实...

Jermyo的博客 4129

gzip压缩数据变大_使用GZIP和压缩数据

gzip压缩数据变大抽象 我们都知道用zip或gzip压缩文件的含义。 但是在Java中使用压缩文件并不像您想的那样简单明了,尤其是如果您不是直接处理文件而是压缩流数据的话。 我们会去: 如何将字符串转换为压缩/压缩字节数组,反之亦然 创建用于读取和写入文件的实用程序功能,而无需事先知道文件或流是否已gzip压缩。 基础 那么,为什么要压缩任何东西? 很简单,因为这是减少必须通过网络传送...

cunhu4317的博客 1122

Java http gzip压缩_HTTP 传输内容的压缩

总结:内容编码:通过content-encoding来指定内容的压缩方式,通过content-length来指定文件大小,服务端会在缓冲指定大小的数据后才发送到浏览器,浏览器收到指定大小的数据后认为文件已接收完毕,之后用相应的压缩方式对内容进行解压。传输编码:上述方式中服务器等指定大小的资源缓冲好才发给浏览器,造成浏览器等待时间长,会影响用户体验。可通过transfer-encoding:chun...

weixin_35651578的博客 1720

JAVA——GZIP压缩与解压缩

基本概念 GZIP编码:GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNⅨ系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。 HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功

无限迭代中...... 2952
上一篇: 错误记录:Current request is not a multipart request
下一篇: spring boot maven项目返回值乱码的解决方法
zhangSir134
博客等级 码龄9年 7969粉丝 246原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值