`

压缩技术Zlib

    博客分类:
  • java
 
阅读更多

         压缩技术 zlib 

         为了缓解网络传输的压力及对内容的安全性的考虑,使用了zlib 对包体进行了压缩、解压缩特地记录代码

 

ZLibUtils 写道
public class ZLibUtils {
private static Logger log = Logger.getLogger("ZLibUtils.class");
/**
* 压缩字节数组
* @param data
* @return
*/
public static byte[] compress(byte[] data){
byte[] compressByteData = new byte[0];

Deflater compress = new Deflater(Deflater.DEFAULT_COMPRESSION);
compress.reset();
compress.setInput(data);
compress.finish();
ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length);
try {
byte[] buf = new byte[1024];
while(!compress.finished()){
int i = compress.deflate(buf);
bos.write(buf,0,i);
}
} catch (Exception e) {
// TODO Auto-generated catch block
compressByteData = data;
log.error("压缩数据异常:"+e.getMessage());
e.printStackTrace();
}finally{
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
log.error("压缩数据,关闭流异常:"+e.getMessage());
}
}
compressByteData = bos.toByteArray();
compress.end();
return compressByteData;
}

public static void compress(byte[] data, OutputStream os){
DeflaterOutputStream dos = new DeflaterOutputStream(os);
try {
dos.write(data,0, data.length);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
log.error("压缩数据异常:"+e.getMessage());
}finally{
try {
dos.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
log.error("压缩数据,关闭流异常:"+e.getMessage());
}
}


}

public static byte[] decompress(byte[] data){
byte[] decompressByteData = new byte[0];
Inflater decompress = new Inflater();
decompress.reset();
decompress.setInput(data);
ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length);
byte[] buf = new byte[1024];
try {
while (!decompress.finished()) {
int i = decompress.inflate(buf);
bos.write(buf,0,i);
}
decompressByteData = bos.toByteArray();
} catch (DataFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
decompressByteData = data;
log.error("解压缩数据异常:"+e.getMessage());
}finally{
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
log.error("解压缩数据,关闭流异常:"+e.getMessage());
}

}
decompress.end();
return decompressByteData;
}

public static byte[] decompress(InputStream is){
byte[] decompressByteData = new byte[0];
InflaterInputStream iis = new InflaterInputStream(is);
ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
try {
int i = 1024;
byte[] buf = new byte[i];
while ((i = iis.read(buf, 0, i)) > 0) {
bos.write(buf, 0, i);
}
decompressByteData = bos.toByteArray();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
log.error("解压缩数据异常:"+e.getMessage());
}finally{
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
log.error("解压缩数据,关闭流异常:"+e.getMessage());
}
}

return decompressByteData;
}
}

 

  

分享到:
评论

相关推荐

    zlib的C++封装类压缩文件

    项目培训需要封装了zlib库生成压缩文件,没什么技术含量,放出来.^-^. 有需要的童鞋拿去,还是想提醒下偷懒的童鞋要看懂代码。 http://blog.csdn.net/infoworld/article/details/41290969

    采用网页压缩技术的浏览器

    采用网页压缩技术的浏览器采用网页压缩技术的浏览器采用网页压缩技术的浏览器采用网页压缩技术的浏览器采用网页压缩技术的浏览器采用网页压缩技术的浏览器采用网页压缩技术的浏览器采用网页压缩技术的浏览器采用网页...

    C#、java 字符流跨平台数据解压缩

    关键技术点和体会: 压缩的结果采用Base64编码,方便在Java端或者C#端打印出来调试,也方便在不同的应用间传输(如webservice),缺点是比转码前体积变大了约35% 字符串采用UTF-8编码获得byte数组,保证两端通用,...

    PHP使用zlib扩展实现GZIP压缩输出的方法详解

    GZIP(GNU-ZIP)是一种压缩技术。经过GZIP压缩后页面大小可以变为原来的30%甚至更小。这样用户浏览的时候就会感觉很爽很愉快! 准备工作 1、找不到php_zlib.dll文件? 自php4.3开始zlib压缩就已经内置在php中了,...

    Java压缩技术整理

    输入结果 Consloe代码 1. 输入字符串: snowolf@zlex.org;dongliang@zlex.org;zlex.dongliang@zlex.org 2. 输入字节长度: 59 3. 压缩后字节长度: 39 ...ZLib压缩对大字节数据压缩,才能反映出压缩效果。

    java压缩技术

    ZLib ZIP 压缩——Java 原生实现 ZIP 解压缩——Java 原生实现 GZIP——Java 原生实现 GZIP 相关——浏览器解析 BZIP2——Commons 实现 TAR——Commons 实现

    让Delphi的TZipFile压缩类支持压缩密码的扩展类

    有些人可能已经知道,Delphi(至少从XE2起)附带了一个内置的TZipFile类,用于读写zip文件。这是一个只是功能有限的一个相当基础的类,但这...查看TZipFile的技术文档,我实际上在文档中找到了如何实现这一点的说明。

    打包Zlib压缩库的COM接口VC源代码

    这是一个对Zlib压缩库进行打包COM接口,完整的应用程序和可重用代码。 关键字:zip,zlib,com,zipreader

    PHP zlib扩展实现页面GZIP压缩输出

    GZIP(GNU-ZIP)是一种压缩技术。经过GZIP压缩后页面大小可以变为原来的30%甚至更小。这样用户浏览的时候就会感觉很爽很愉快!

    多文件压缩传输及解压缩的方法* (2009年)

    分析了Zlib压缩、解压缩原理及在Delphi中的应用方法。对比流行压缩软件多文件压缩方法,针对交通诱导屏显示方案特点,通过优化文件合并方式,设计一种通过程序控制把多个离散的类型单一的文件压缩成单个文件传输,...

    js利用crypto进行"aes-128-cbc"解密压缩视频文件

    为防止有版权的视频文件在播放时直接暴露,利用JavaScript加密库crypto进行"aes-128-cbc",将视频文件加密解密压缩,用到的技术有gzip压缩、fs读写文件

    工业互联网安全测试技术:施耐德NOE固件逆向分析.docx

    (1)使用Binwalk来确认NOE77101_Exec_V64.bin的压缩类型,发现385的压缩类型是为zlib类型如图。 (2)使用Binwalk提取zlib压缩的文件,解压时会在同一目录下新建文件夹_NOE77101—_Exec_V64.bin.extracted。解压后...

    多文件压缩传输及解压缩的方法 (2009年)

    分析了 Zlib压缩、解压缩原理及在 Delphi中的应用方法。对比流行压缩软件多文件压缩方法,针对交通诱导屏显示方案特点,通过优化文件合并方式,设计一种通过程序控制把多个离散的类型单一的文件压缩成单个文件传输,接收...

    IOCP的演示源代码

    IOCP技术,是在 WIN32平台上构架服务器最好的框架

    PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)

    这个apache的gzip压缩是靠一个叫做zlib的类库和gzip的模块(mod_gzip.c)完成的,这玩意专门有一帮牛人研究,因为gzip本身就大名鼎鼎的,并且具有高压缩率开源的压缩原理,所以我们的开源apache才会采用这种开源的压缩...

    基于Qt的开源小项目,数据安全工具QuickEncrypt

    针对文本和文件加解密的智能数据压缩技术 支持超过4GB的大文件 2.安全机制 2.1 文件擦除策略 a.修改文件名为随机串; b.以32字节的块向文件写入全0; c.刷新数据,关闭文件; d.修改文件名为随机串; e....

    borg-macosx64 borgbackup: 1.1.11 重复数据删除备份程序

    压缩可以选择压缩所有数据:lz4(超快速,低压缩)zstd(从高速和低压缩到高压缩和低速的宽范围)zlib(中速和压缩)lzma(低速,高压缩)Off-站点备份Borg可以将数据存储在可通过SSH访问的任何远程主机上。...

    嵌入式系统/ARM技术中的关于cramfs文件系统的一些介绍

     CRAMFS文件系统是专门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩,文件系统类型可以是EXT2或EXT3. cramfs文件系统并不需要一次性地将文件系统中的所有内容解压到ram中,而只是是系统需要...

    论文研究-基于MQ的文件分片传输系统设计与实现 .pdf

    基于MQ的文件分片传输系统设计与实现,吴成宾,朱彬,基于MQ的文件分片传输系统融合了通信中间件,Zlib压缩、对称加密等技术,能够实现异构环境下可靠的文件数据交换。本文介绍了分片文

    vs2015正常编译quazip工程

    quazip0.7.3解压缩版本,可以正常在vs2015中编译,里面添加了zlib的库。

Global site tag (gtag.js) - Google Analytics