package zip;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;

public class Test {


public static void main(String[] args) {

String inStr = "@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";
System.err.println("字节压缩/解压缩测试");
System.err.println("输入字符串:\t" + inStr);
byte[] input = inStr.getBytes();
System.err.println("输入字节长度:\t" + input.length);

byte[] data = compress(input);
System.err.println("压缩后字节长度:\t" + data.length);

byte[] output = decompress(data);
System.err.println("解压缩后字节长度:\t" + output.length);
String outputStr = new String(output);
System.err.println("输出字符串:\t" + outputStr);


}

/**
* 压缩
*
* @param data
* 待压缩数据
* @return byte[] 压缩后的数据
*/
public static byte[] compress(byte[] data) {
byte[] output = new byte[0];

Deflater compresser = new Deflater();

compresser.reset();
compresser.setInput(data);
compresser.finish();
ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length);
try {
byte[] buf = new byte[1024];
while (!compresser.finished()) {
int i = compresser.deflate(buf);
bos.write(buf, 0, i);
}
output = bos.toByteArray();
} catch (Exception e) {
output = data;
e.printStackTrace();
} finally {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
compresser.end();
return output;
}

/**
* 压缩
*
* @param data
* 待压缩数据
*
* @param os
* 输出流
*/
public static void compress(byte[] data, OutputStream os) {
DeflaterOutputStream dos = new DeflaterOutputStream(os);

try {
dos.write(data, 0, data.length);

dos.finish();

dos.flush();
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* 解压缩
*
* @param data
* 待压缩的数据
* @return byte[] 解压缩后的数据
*/
public static byte[] decompress(byte[] data) {
byte[] output = new byte[0];

Inflater decompresser = new Inflater();
decompresser.reset();
decompresser.setInput(data);

ByteArrayOutputStream o = new ByteArrayOutputStream(data.length);
try {
byte[] buf = new byte[1024];
while (!decompresser.finished()) {
int i = decompresser.inflate(buf);
o.write(buf, 0, i);
}
output = o.toByteArray();
} catch (Exception e) {
output = data;
e.printStackTrace();
} finally {
try {
o.close();
} catch (IOException e) {
e.printStackTrace();
}
}

decompresser.end();
return output;
}

/**
* 解压缩
*
* @param is
* 输入流
* @return byte[] 解压缩后的数据
*/
public static byte[] decompress(InputStream is) {
InflaterInputStream iis = new InflaterInputStream(is);
ByteArrayOutputStream o = new ByteArrayOutputStream(1024);
try {
int i = 1024;
byte[] buf = new byte[i];

while ((i = iis.read(buf, 0, i)) > 0) {
o.write(buf, 0, i);
}

} catch (IOException e) {
e.printStackTrace();
}
return o.toByteArray();
}
}

测试结果:

java 压缩技术的更多相关文章

  1. Java压缩技术(二) ZIP压缩——Java原生实现

    原文:http://snowolf.iteye.com/blog/642298 去年整理了一篇ZLib算法Java实现(Java压缩技术(一) ZLib),一直惦记却没时间补充.今天得空,整理一下ZI ...

  2. Java压缩技术的学习

    由于工作的需要,经常要手动去打上线安装包,为了方便,自己写程序去帮助打包.使用过Unix或者Linux的人都基本上都用过tar打包以及gzip压缩,但在Windows下使用得最多的压缩还是RAR和Zi ...

  3. Java压缩技术(三) ZIP解压缩——Java原生实现

    原文:http://snowolf.iteye.com/blog/642492 JavaEye的朋友跟我说:“你一口气把ZIP压缩和解压缩都写到一个帖子里,我看起来很累,不如分开好阅读”.ok,面向读 ...

  4. Java压缩技术(一) ZLib

    原文:http://snowolf.iteye.com/blog/465433 有关ZLib可参见官方主页 http://www.zlib.net/ ZLib可以简单的理解为压缩/解压缩算法,它与ZI ...

  5. Java后端实现图片压缩技术

    今天来说说图片压缩技术,为什么要使用图片压缩,图片上传不就完事了吗?对的,这在几年前可以这么说,因为几年前还没有现在这么大的并发,也没有现在这么关注性能. 如今手机很多,很多人都是通过手机访问网络或者 ...

  6. (转)java缓存技术,记录

    http://blog.csdn.net/madun/article/details/8569860 最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇 ...

  7. 深入分析Java Web技术内幕(修订版)

    阿里巴巴集团技术丛书 深入分析Java Web技术内幕(修订版)(阿里巴巴集团技术丛书.技术大牛范禹.玉伯.毕玄联合力荐!大型互联网公司开发应用实践!) 许令波 著   ISBN 978-7-121- ...

  8. JAVA缓存技术之EhCache

    最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇,暂作保存,后面如果有用到可以参考.此为转贴,帖子来处:http://cogipard.info/ar ...

  9. JAVA缓存技术之EhCache(转)

    最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇,暂作保存,后面如果有用到可以参考.此为转贴,帖子来处:http://cogipard.info/ar ...

随机推荐

  1. Python系统调用——运行其他程序

    转载:http://blog.csdn.net/ssihc0/article/details/7738527 在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其 ...

  2. 解决Maven不能下载“oracle、aspectjweaver、com.springsource.net.sf.cglib”jar

    鸣谢网址:http://www.cnblogs.com/dongyangbolg/p/3455422.html http://www.cnblogs.com/ysq0908/p/4737977.htm ...

  3. replace()替换文字

    var test = text.innerHTML; b = test.replace(/任晓强/g,"你好"); console.log(b); html: <div id ...

  4. 让Flash背景透明兼容Firefox、IE 6和IE 7的代码

    添加代码: <param name="wmode" value="transparent" > 到 <object>…</obje ...

  5. XML 创建

    using unityEngine; using System.Collections; using System.Linq; using System.Xml.Linq; using System; ...

  6. Hadoop之RPC

           Hadoop的RPC主要是通过Java的动态代理(Dynamic Proxy)与反射(Reflect)实现,代理类是由java.lang.reflect.Proxy类在运行期时根据接口, ...

  7. linux 修改命令行编码 乱码解决方案

    修改/etc/default/locale命令:sudo vim /etc/default/locale1将下面这两行 LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh 修改为: ...

  8. [itint5]任务调度

    http://www.itint5.com/oj/#10 拓扑排序.首先按照题目给出的数据结构复杂度不会是O(v+e)的,所以先要变换数据结构.二来写的时候用一个stack会更好点.还有就是题目里其实 ...

  9. 使用FileZilla Server轻松搭建个人FTP服务器

    Linux平台下快速搭建FTP服务器 服务器FTP Server环境搭建 针对以上遇到的问题的解决方案如下: 1)如何上传文件到云服务器上          关于这个问题,我首先想到的是使用FileZ ...

  10. Android安全问题 程序锁

    导读:本文介绍如何实现对应用加锁的功能,无须root权限 某些人有时候会有这样一种需求,小A下载了个软件,只是软件中的美女过于诱惑与暴露,所以他不想让别人知道这是个什么软件,起码不想让别人打开浏 览. ...