文档章节

Java语言实现数据的GZip数据的压缩和解压

Java_Coder
 Java_Coder
发布于 2015/01/21 20:35
字数 195
阅读 41
收藏 0
public final class GZipUtil {
 
 public static final int BUFFER = 10240;
  
 public static byte[] gzipCompress(byte[] data) {
  ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(BUFFER);
  GZIPOutputStream output = null;
  try {
   output = new GZIPOutputStream(byteOutput);
   output.write(data);
  } catch (IOException e) {
   throw new RuntimeException("G-Zip failed.", e);
  } finally {
   if (output != null) {
    try {
     output.close();
    } catch (IOException e) {
    }
   }
  }
  return byteOutput.toByteArray();
 }
 
 public static byte[] gzipDecompress(byte[] data) throws Exception {
  ByteArrayInputStream bais = new ByteArrayInputStream(data);
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  GZIPInputStream gis = new GZIPInputStream(bais);
  int count;
   data = new byte[BUFFER];
  while ((count = gis.read(data, 0, BUFFER)) != -1) {
   baos.write(data, 0, count);
  }
  
  data = baos.toByteArray();
  gis.close();
  baos.flush();
  baos.close();
  bais.close();
  return data;
 }

public static void main(String[] args) throws Exception {
  
  String data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
  System.out.println("原始数据大小:" + data.getBytes().length);  //114
  System.out.println("压缩数据大小:" + gzipCompress(data.getBytes()).length);  //24
  System.out.println("解压数据大小:" + gzipDecompress(gzipCompress(data.getBytes())).length);  //114
  
 }
 
}

© 著作权归作者所有

共有 人打赏支持
Java_Coder
粉丝 60
博文 159
码字总数 102864
作品 0
杭州
私信 提问
linux C zip 压缩 字符串

项目需要通过zip压缩进行数据传输,linux c为客户端,java为服务端,通过TCP发送,目前已实现java版本的zip压缩解压缩。 现在还需要实现C客户端的zip压缩。 尝试使用zlib的compress,长度不一...

bigbear1007
2016/02/17
864
2
protocol buffer 对socket协议封装成二进制传输

protocol buffer 是 google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是...

MrLovelyCbb
2012/02/15
0
0
protocol buffer

protocol buffer 是 google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是...

MrLovelyCbb
2011/12/08
0
0
Java压缩技术(一) ZLib

应好友需要,整理一下Java的压缩算法,先从ZLib开始。 相关链接: Java压缩技术(一) ZLib Java压缩技术(二) ZIP压缩——Java原生实现 Java压缩技术(三) ZIP解压缩——Java原生实现 Ja...

村长大神
2014/11/05
0
0
【XML系列】详解JDOM解析XML

【XML系列】详解JDOM解析XML 一、前言 JDOM是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初,JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Java工具包。...

磊神Ray
2011/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

第11章 多线程

程序、进程、线程 程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 **进程(process)**是程序的一次执行过程或是正在运行的一个程序。动...

流小文
今天
5
0
SpringBoot引入第三方jar包或本地jar包的处理方式

在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢 一般有两种方法 - 第一种是将本地jar包安装在本地maven库 - 第二种是将本地j...

独钓渔
今天
2
0
五、MyBatis缓存

一、MyBatis缓存介绍 缓存的使用可以明显的加快访问数据速度,提升程序处理性能,生活和工作中,使用缓存的地方很多。在开发过程中,从前端-->后端-->数据库等都涉及到缓存。MyBatis作为数据...

yangjianzhou
今天
2
0
最近研究如何加速UI界面开发,有点感觉了

最近在开发JFinal学院的JBolt开发平台,后端没啥说的,做各种极简使用的封装,开发者上手直接使用。 JBolt开发平台包含常用的用户、角色、权限、字典、全局配置、缓存、增删改查完整模块、电...

山东-小木
今天
3
0
《月亮与六便士》的读后感作文3000字

《月亮与六便士》的读后感作文3000字: 看完英国作家威廉.萨默塞特.毛姆所著《月亮与六便士》(李继宏译),第一疑问就是全书即没提到“月亮”,也没提到“六便士”。那这书名又与内容有什么...

原创小博客
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部