java对byte数组解压缩(zip,gzip,bzip2,jzlib)
来源:互联网 发布:万能网络监控客户端 编辑:程序博客网 时间:2024/05/16 07:44
//导入bzip2.jar和jzlib相关java文件
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import org.apache.tools.bzip2.CBZip2InputStream;
import org.apache.tools.bzip2.CBZip2OutputStream;
import com.jcraft.jzlib.JZlib;
import com.jcraft.jzlib.ZInputStream;
import com.jcraft.jzlib.ZOutputStream;
public class Test {
/***
* 压缩GZip
*
* @param data
* @return
*/
public static byte[] gZip(byte[] data) {
byte[] b = null;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(bos);
gzip.write(data);
gzip.finish();
gzip.close();
b = bos.toByteArray();
bos.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return b;
}
/***
* 解压GZip
*
* @param data
* @return
*/
public static byte[] unGZip(byte[] data) {
byte[] b = null;
try {
ByteArrayInputStream bis = new ByteArrayInputStream(data);
GZIPInputStream gzip = new GZIPInputStream(bis);
byte[] buf = new byte[1024];
int num = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((num = gzip.read(buf, 0, buf.length)) != -1) {
baos.write(buf, 0, num);
}
b = baos.toByteArray();
baos.flush();
baos.close();
gzip.close();
bis.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return b;
}
/***
* 压缩Zip
*
* @param data
* @return
*/
public static byte[] zip(byte[] data) {
byte[] b = null;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(bos);
ZipEntry entry = new ZipEntry("zip");
entry.setSize(data.length);
zip.putNextEntry(entry);
zip.write(data);
zip.closeEntry();
zip.close();
b = bos.toByteArray();
bos.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return b;
}
/***
* 解压Zip
*
* @param data
* @return
*/
public static byte[] unZip(byte[] data) {
byte[] b = null;
try {
ByteArrayInputStream bis = new ByteArrayInputStream(data);
ZipInputStream zip = new ZipInputStream(bis);
while (zip.getNextEntry() != null) {
byte[] buf = new byte[1024];
int num = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((num = zip.read(buf, 0, buf.length)) != -1) {
baos.write(buf, 0, num);
}
b = baos.toByteArray();
baos.flush();
baos.close();
}
zip.close();
bis.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return b;
}
/***
* 压缩BZip2
*
* @param data
* @return
*/
public static byte[] bZip2(byte[] data) {
byte[] b = null;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
CBZip2OutputStream bzip2 = new CBZip2OutputStream(bos);
bzip2.write(data);
bzip2.flush();
bzip2.close();
b = bos.toByteArray();
bos.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return b;
}
/***
* 解压BZip2
*
* @param data
* @return
*/
public static byte[] unBZip2(byte[] data) {
byte[] b = null;
try {
ByteArrayInputStream bis = new ByteArrayInputStream(data);
CBZip2InputStream bzip2 = new CBZip2InputStream(bis);
byte[] buf = new byte[1024];
int num = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((num = bzip2.read(buf, 0, buf.length)) != -1) {
baos.write(buf, 0, num);
}
b = baos.toByteArray();
baos.flush();
baos.close();
bzip2.close();
bis.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return b;
}
/**
* 把字节数组转换成16进制字符串
*
* @param bArray
* @return
*/
public static String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i < bArray.length; i++) {
sTemp = Integer.toHexString(0xFF & bArray[i]);
if (sTemp.length() < 2)
sb.append(0);
sb.append(sTemp.toUpperCase());
}
return sb.toString();
}
/**
* 压缩数据
*
* @param object
* @return
* @throws IOException
*/
public static byte[] jzlib(byte[] object) {
byte[] data = null;
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ZOutputStream zOut = new ZOutputStream(out,
JZlib.Z_DEFAULT_COMPRESSION);
DataOutputStream objOut = new DataOutputStream(zOut);
objOut.write(object);
objOut.flush();
zOut.close();
data = out.toByteArray();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
/**
* 解压被压缩的数据
*
* @param object
* @return
* @throws IOException
*/
public static byte[] unjzlib(byte[] object) {
byte[] data = null;
try {
ByteArrayInputStream in = new ByteArrayInputStream(object);
ZInputStream zIn = new ZInputStream(in);
byte[] buf = new byte[1024];
int num = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((num = zIn.read(buf, 0, buf.length)) != -1) {
baos.write(buf, 0, num);
}
data = baos.toByteArray();
baos.flush();
baos.close();
zIn.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
public static void main(String[] args) {
String s = "this is a test";
byte[] b1 = zip(s.getBytes());
System.out.println("zip:" + bytesToHexString(b1));
byte[] b2 = unZip(b1);
System.out.println("unZip:" + new String(b2));
byte[] b3 = bZip2(s.getBytes());
System.out.println("bZip2:" + bytesToHexString(b3));
byte[] b4 = unBZip2(b3);
System.out.println("unBZip2:" + new String(b4));
byte[] b5 = gZip(s.getBytes());
System.out.println("bZip2:" + bytesToHexString(b5));
byte[] b6 = unGZip(b5);
System.out.println("unBZip2:" + new String(b6));
byte[] b7 = jzlib(s.getBytes());
System.out.println("jzlib:" + bytesToHexString(b7));
byte[] b8 = unjzlib(b7);
System.out.println("unjzlib:" + new String(b8));
}
}
- java对byte数组解压缩(zip,gzip,bzip2,jzlib)
- java对byte数组解压缩(zip,gzip,bzip2,jzlib)
- java对byte数组解压缩(zip,gzip,bzip2,jzlib)
- java对byte数组解压缩(zip,gzip,bzip2,jzlib)
- 【Java】java和android网络编程 - 对byte数组压缩和解压缩(zip,gzip,bzip2,jzlib)
- zip bzip2 gzip xz tar文件解压缩
- 压缩、解压缩(tar/zip/bzip2/gz/gzip/zip)
- c#压缩解压缩bzip2、tar、zip、gzip、deflate、ntdll
- 字符串解压缩类库(zip、GZIP、QuickLz、snappy、lzf、jzlib)介绍
- 字符串解压缩类库(zip、GZIP、QuickLz、snappy、lzf、jzlib)性能对比
- tar gzip bzip2 zip
- 解压缩命令:tar,gzip,bzip2
- ASP.NET下Zip,GZip,BZip2,Tar的实时压缩与解压缩
- Linux命令之文件归档、压缩、解压缩-tar,gzip,gunzip,bzip2,bunzip2,zip
- linux下gzip,bzip2,tar,zip,rar压缩与解压缩命令总结
- java实现linux中gzip压缩解压缩算法:byte[]字节数组,文件,字符串,数据流的压缩解压缩
- java对zip压缩文件解压缩
- gzip,zip,bzip2 文件压缩和归档
- iframe异步加载技术及性能
- mmap函数
- 二叉树的递归遍历和非递归遍历
- DICOM3.0影像文件中的平面和立体坐标信息
- mahout入门
- java对byte数组解压缩(zip,gzip,bzip2,jzlib)
- PHP 高级教程
- MySQL中使用INNER JOIN来实现Intersect并集操作
- MYSQL 常见字符长度
- uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )
- nginx实现url重写-rewrite实例参考
- windows 之PHP.INI配置:文件上传功能配置教程
- 【iOS】Xib的使用与File'Owner总结
- 两个activity界面间跳转切换动画效果