文件压缩与解压
来源:互联网 发布:网络翻墙 违法 编辑:程序博客网 时间:2024/05/16 10:31
Java文件ZLib压缩与解压示例:
/** * 2009-9-9 */ package com.game.util; 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;import org.apache.log4j.LogManager;import org.apache.log4j.Logger; /** * ZLib压缩工具 * * @version 1.0 * @since 1.0 */ public abstract class ZLibUtils { private static Logger log = LogManager.getLogger(ZLibUtils.class); /** * 压缩 * * @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; log.error(e, e); } finally { try { bos.close(); } catch (IOException e) { log.error(e, e); } } 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) { log.error(e, e); } } /** * 解压缩 * * @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; log.error(e, e); } finally { try { o.close(); } catch (IOException e) { log.error(e, e); } } 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) { log.error(e, e); } return o.toByteArray(); } }
0 0
- 文件压缩与解压
- 文件压缩与解压
- 文件压缩与解压
- 文件压缩与解压
- 文件压缩与解压
- 文件压缩与解压
- 文件压缩与解压
- java压缩与解压文件
- Linux文件压缩与解压
- Java文件解压与压缩
- Hadoop文件压缩与解压
- Linux文件压缩与解压
- C# 文件压缩与解压
- 文件的压缩与解压
- java文件压缩与解压
- linux文件压缩与解压
- 项目:文件压缩与解压
- 文件zip压缩与解压
- sqoop针对联合主键的表导入hbase的简单控制技巧
- discuz插件, xml 语言包 里面的内容调整,修改后没变化的解决方法
- Android onTouchEvent 与 onInterceptTouchEvent的区别详解
- 智能手机照片被格式后怎么恢复
- mybatis / ibatis +spring整合
- 文件压缩与解压
- MT6261A驱动
- Linux下编译C文件的过程
- 高中学历小情侣,为何双双拿高薪?事业已稳定,爱情更牢固!(大学生情侣及应届实习生慎点)
- 解决SSH自动断开连接
- myeclipse 注册码编辑器
- 浅谈Javascript中默认参数值的设置
- 微软内部资料显示诺基亚品牌将彻底停用
- ZOJ1796