Java压缩/解压缩二进制文件
在Java中提供Deflater和Inflater工具类来压缩/解压缩数据。 这两个工具类采用zlib算法,下面给出一个封装好的工具。
- /**
- * util for compress/decompress data
- *
- * @author lichengwu
- * @version 1.0
- * @created 2013-02-07 10:14 AM
- */
- public final class CompressionUtil {
- private static final int BUFFER_SIZE = 4 * 1024;
- /**
- * compress data by {@linkplain Level}
- *
- * @author lichengwu
- * @created 2013-02-07
- *
- * @param data
- * @param level
- * see {@link Level}
- * @return
- * @throws IOException
- */
- public static byte[] compress(byte[] data, Level level) throws IOException {
- Assert.notNull(data);
- Assert.notNull(level);
- Deflater deflater = new Deflater();
- // set compression level
- deflater.setLevel(level.getLevel());
- deflater.setInput(data);
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length);
- deflater.finish();
- byte[] buffer = new byte[BUFFER_SIZE];
- while (!deflater.finished()) {
- int count = deflater.deflate(buffer); // returns the generated
- // code... index
- outputStream.write(buffer, 0, count);
- }
- byte[] output = outputStream.toByteArray();
- outputStream.close();
- return output;
- }
- /**
- * decompress data
- *
- * @author lichengwu
- * @created 2013-02-07
- *
- * @param data
- * @return
- * @throws IOException
- * @throws DataFormatException
- */
- public static byte[] decompress(byte[] data) throws IOException, DataFormatException {
- Assert.notNull(data);
- Inflater inflater = new Inflater();
- inflater.setInput(data);
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length);
- byte[] buffer = new byte[BUFFER_SIZE];
- while (!inflater.finished()) {
- int count = inflater.inflate(buffer);
- outputStream.write(buffer, 0, count);
- }
- byte[] output = outputStream.toByteArray();
- outputStream.close();
- return output;
- }
- /**
- * Compression level
- */
- public static enum Level {
- /**
- * Compression level for no compression.
- */
- NO_COMPRESSION(0),
- /**
- * Compression level for fastest compression.
- */
- BEST_SPEED(1),
- /**
- * Compression level for best compression.
- */
- BEST_COMPRESSION(9),
- /**
- * Default compression level.
- */
- DEFAULT_COMPRESSION(-1);
- private int level;
- Level(
- int level) {
- this.level = level;
- }
- public int getLevel() {
- return level;
- }
- }
- }
转载于:https://blog.51cto.com/ajiao13/1133116
Java压缩/解压缩二进制文件相关推荐
- java压缩/解压缩zip格式文件
因为项目要用到压缩.解压缩zip格式压缩包,只好自己封装一个,对于网上流行的中文乱码的问题,本文的解决方法是用apache的包代替jdk里的.基本上还是比较好用的. 废话少说,直接上代码. 1 pac ...
- Java 压缩解压缩 第三方组件,推荐一个强大的Java开发工具类库!
feilong开发更简便的工具库 Reduce development, Release ideas (灵感从重复简单的代码中释放出来) 让你从大量重复的底层代码中脱身,提高工作效率; 让你的代码更简 ...
- java压缩解压缩完整例子(仅支持lzh格式)
把下面文件放入同一目录下,运行使用 Run As Java Application 即可 //文件DirectoryZip.java, 压缩文件例子 import java.io.File; im ...
- java压缩解压缩类实例[转]
package com.yangxiaozuo.util; import java.io.ByteArrayOutputStream; import java.io.IOException; ...
- java压缩解压缩_利用Java实现压缩与解压缩(zip、gzip)支持中文路径
zip扮演着归档和压缩两个角色:gzip并不将文件归档,仅只是对单个文件进行压缩,所以,在UNIX平台上,命令tar通常用来创建一个档案文件,然后命令gzip来将档案文件压缩. Java I/O类库还 ...
- java压缩解压缩rar、zip文件
来源https://www.open-open.com/lib/view/open1363592512046.html 被zip 折腾的要死,特意记录一下来,以后防翻车 package cn.com. ...
- java 压缩技术_Java压缩技术(三) ZIP解压缩——Java原生实现
JavaEye的朋友跟我说:"你一口气把ZIP压缩和解压缩都写到一个帖子里,我看起来很累,不如分开好阅读".ok,面向读者需求,我做调整,这里单说ZIP解压缩! 相关链接: Jav ...
- Java压缩技术(三) ZIP解压缩——Java原生实现
转载自 Java压缩技术(三) ZIP解压缩--Java原生实现 解压缩与压缩运作方式相反,原理大抵相同,由ZipInputStream通过read方法对数据解压,同时需要通过CheckedInp ...
- java使用tar算法压缩解压缩文件、数据流、byte[]字节数组
全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用tar算法压缩解压缩文件.数据流.byte[]字节数组 需要添加org.apache.commons.compress包,下载 测试代 ...
最新文章
- ABAP 读EXCEL 到内表
- bootstraptable 分页循环_关于bootstrap-table服务端分页问题
- python正则去除换行符,关于python:用于删除换行符的正则表达式
- 在Spring Boot中实现相关ID(用于SOA /微服务中的分布式跟踪)
- php7 字符串,php7 参数、整形及字符串处理机制修改实例分析
- [蛋蛋无厘头日记]约会ing~~
- Educational Codeforces Round 9 B. Alice, Bob, Two Teams 前缀和
- Atitit 前端技术体系 目录 1. 基础系列	2 1.1. NUI CLI GUI	2 1.2. MVC WEBFORM PAGE模式 stage模式	2 2. 技术应用系列	2 2.
- BZOJ1143[CTSC2008] 祭祀river
- 「经典题」完整的前端项目开发流程
- 锁的等级:方法锁、对象锁、类锁。
- Oracle VM VirtualBox固定ip
- SQLite attach detach 心得
- 傅福:我可能是杭州接受BCH付款的第一个数码商家
- 如何在Linux系统中安装DBeaver通用数据库工具
- Word转pdf一个方法就可以完成~手机电脑都可以免费使用~办公必备
- DirectX 性能优化
- 改良型新药之详细分类
- 硬件设备PS/2指的是什么?都有什么用途?
- 回溯法求解N皇后问题
热门文章
- [Web Chart系列之五] 3. 实战draw2d 之图形填充色(纯色 or 渐变)
- html5 ul下的li重叠解决,html – 如何仅在嵌套的ul中悬停当前的li?
- php循环的应用案例,php for循环的实例分享
- jdbc显示mysql的数据_JDBC链接mysql插入数据后显示问号的原因及解决办法
- eggjs增删改查MySQL,nodejs操作mysql实现增删改查
- linux 设置端口常用命令
- Git 将本地的一个分支上的代码合并到本地的另一个分支
- JavaScript中的XMLHttpRequest对象
- c语言宏定义替换字符串,C语言中,宏替换的替换规则
- html设置设置字母间的距离,css如何设置字母间距?字母间距的设置方法