java.util.zip.Deflater 压缩 inflater解压 实例
2015-07-15 11:45
435 查看
原文:java压缩解压缩类实例[转]
package com.example.helloworld; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.Deflater; import java.util.zip.Inflater; /** * ZLib压缩工具 * * @author 梁栋 * @version 1.0 * @since 1.0 */ public abstract class Utils { /** * 压缩 * * @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 待压缩的数据 * @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; } public static void main(String[] args) { String inputStr = "snowolf@zlex.org;dongliang@zlex.org;zlex.dongliang@zl"; System.err.println("输入字符串:\t" + inputStr); byte[] input = inputStr.getBytes(); System.err.println("输入字节长度:\t" + input.length); byte[] data = Utils.compress(input); System.err.println("压缩后字节长度:\t" + data.length); byte[] output = Utils.decompress(data); System.err.println("解压缩后字节长度:\t" + output.length); String outputStr = new String(output); System.err.println("输出字符串:\t" + outputStr); } }
相关文章推荐
- 深入浅出 Java Concurrency (2): 原子操作 part 1
- java导出word之freemarker导出
- java将html导出成word(利用的poi包导出)
- java创建文件和目录
- Spring-MVC并发访问的线程安全性问题
- Eclipse-----Debug Maven项目时找不到源码
- java实现多线程的两种方式继承Thread类和实现Runnable接口
- Java基础-异常-总结参考
- eclipse离线安装svn插件
- spring3.0 事务管理
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- Eclipse设置相同变量背景色高亮显示
- JDK动态代理实现原理
- ubuntu安装配置jdk
- Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosin
- java.lang.OutOfMemoryError: PermGen space
- java static代码段 2
- Spring-Controller单元测试
- [LeetCode][Java] Spiral Matrix
- 如何在改版的spring官网下载jar包问题