package com.hisuper.utils;
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;
/**
* ZLib压缩工具
*
* @author dhdu@qq.com
* @version 1.0
* @since 1.0
*/
public abstract class ZLibUtils {
/**
* 压缩
*
* @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();
}
}
分享到:
相关推荐
Zlib压缩解压工具,第一次用请先运行reg.bat注册组件
zlib不提供多层压缩,本工具是自己写的压缩多级目录的工具
zlib的windows端应用工具,有命令行和GUI两个程序,WIN 7下可能只有命令行可以正常运行。
zlib压缩解压缩工具,包含源代码,拖拽文件直接压缩解压缩
一些工具类代码块的标准代码: 压缩, return byte[] 压缩后的数据 解压缩, return byte[] 解压缩后的数据
封装的java zlib压缩工具,可以方面快速的实现压缩功能
一个python写的可以对任意文件进行zlib压缩的小工具
基于ZLIB压缩库的数据或文件的压缩与解压缩
使用ZLib和minizip实现对文件夹(包括子文件夹)的压缩解压缩工具,vc6.0版
java压缩字符串
VC写的dll, 看上去有着C++的文件名,实际上除了new之外没有用到C++任何特性。主要功能为从24位位图生成不规则窗体。
解压用zlib压缩的内存数据,完整源码与编译出来的工具
压缩率高,速度快,可以使用通用的工具解压缩,编程开发简单,可以使用C++,C#等语言进行开发。有详细的使用说明
它是其他压缩工具的基础。下面来一起看看python用模块zlib压缩与解压字符串和文件的方法。话不多说,直接来看示例代码。 例子1:压缩与解压字符串 import zlib message = 'abcd1234' compressed = zlib.compress...
对资源“解析酷狗歌词文件”遗漏代码的补充;提供了对zip数据的解压, 入参为压缩字节或压缩输入流,返回解压后的字节。
HaoZip 等的文件档案管理工具,支持创建压缩、解压缩 内建的 .pkg 档案格式文件,也可以将其绑定在用户自己的 图片文件(*.jpg; *.bmp; *.gif; *.png等)中实现无缝隐藏。 同时WinPkg像WinRar一样也支持对于自解压包...
自己编写 压缩解压小工具 压缩后文件后缀名为yjw 利用此工具再次解压即可。实现利用Zlib压缩库,既可以实现压缩文件 又可以保密文件
紧接着《C++ zlib库源码编译及简单使用(VS2019)》后,我们使用minizip+zlib,对多级文件夹进行加密压缩成zip文件,然后对zip文件进行解压缩。 支持WinRAR、360zip等第三方工具解密解压。
zlib C ++包装库这是一个能够压缩...编译和安装说明请先安装zlib开发人员文件MacOSX请在OSX系统上安装命令行工具,然后可以找到zlib。 Debian使用apt-get在系统上安装zlib1g-dev。 sudo apt-get install zlib1g-dev编译
zlib window 下编译的lib,从官网下载,不想从官网下载的就从这里下载,压缩工具的lib,保证正品,,保证正品,,保证正品,重要的事情说三遍!