Java JDK 内置 ZIP 压缩与解压流
以下代码展示了如何使用 JDK 自带的 java.util.zip 包实现字节数组的压缩与解压功能。
package com.test.java.zip;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class ZipUtil {
/**
* 压缩方法
*/
public static byte[] zip(byte[] source) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStream);
zipOutputStream.putNextEntry(new ZipEntry("0"));
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(zipOutputStream);
bufferedOutputStream.write(source);
bufferedOutputStream.close();
return byteArrayOutputStream.toByteArray();
}
[] unzip([] source) IOException {
( (source));
(zipInputStream.getNextEntry() != ) {
();
[] buffer = [];
;
((i = zipInputStream.read(buffer)) != -) {
byteArrayOutputStream.write(buffer, , i);
}
byteArrayOutputStream.toByteArray();
}
;
}
IOException {
;
;
( (file));
[] bytes1 = [bufferedInputStream.available()];
bufferedInputStream.read(bytes1);
bufferedInputStream.close();
System.out.println( + bytes1.length);
[] bytes2 = ZipUtil.zip(bytes1);
System.out.println( + bytes2.length);
[] bytes3 = ZipUtil.unzip(bytes2);
System.out.println( + bytes3.length);
( (outFile));
bufferedOutputStream.write(bytes3);
bufferedOutputStream.close();
}
}


