字串解壓縮類庫(zip、GZIP、QuickLz、snappy、lzf、jzlib)介紹
1、ZIP、 GZIP計算機檔案壓縮演算法,JDK中java.util.zip.*中實現。主要包括ZipInputStream/ ZipOutputStream、GZipInputStream/ ZipOutputStream。
2、QuickLZ是一個號稱世界壓縮速度最快的壓縮庫,並且也是個開源的壓縮庫,其遵守 GPL 1, 2 或 3協議。
3、Snappy是一個 C++的用來壓縮和解壓縮的開發包,其目標不是最大限度壓縮,而且不相容其他壓縮格式。旨在提供高速壓縮速度和合理的壓縮率。在64位模式的 Core i7 處理器上,可達每秒250~500兆的壓縮速度。在 Google 內部被廣泛的使用,從
4、LZF採用類似lz77和lzss的混合編碼,針對字串壓縮演算法。
5、JZLIB是純java的開源解壓、壓縮包,與JDK中ZLIB類似。
預選解壓縮類庫使用介紹--ZIP
壓縮
String s = “這是一個用於測試的字串”;
ByteArrayOutputStream out = new ByteArrayOutputStream();
ZipOutputStreamzout = new ZipOutputStream(out);
zout.putNextEntry(new ZipEntry("0"));
zout.write
zout.closeEntry();
byte[] compressed = out.toByteArray(); --返回壓縮後的字串的位元組陣列
解壓
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(compressed);
ZipInputStreamzin = new ZipInputStream(in);
zin.getNextEntry();
byte[] buffer = new byte[1024];
intoffset = -1;
while ((offset = zin.read(buffer))!= -1) {
out.write(buffer, 0, offset);
}
byte[] uncompressed = out.toByteArray(); --返回解壓縮後的字串的位元組陣列
預選解壓縮類庫使用介紹--GZIP
壓縮
String s = “這是一個用於測試的字串”;
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZipOutputStream gout = new GZipOutputStream(out);
gout.write(s.getBytes());
byte[] compressed = out.toByteArray(); --返回壓縮後的字串的位元組陣列
解壓
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(compressed);
GZipInputStreamgzin =newGZipInputStream(in);
byte[] buffer = new byte[1024];
intoffset = -1;
while ((offset = gzin.read(buffer)) != -1) {
out.write(buffer, 0, offset);
}
byte[] uncompressed = out.toByteArray(); --返回解壓縮後的字串的位元組陣列
預選解壓縮類庫使用介紹--QuickLZ
壓縮
String s = “這是一個用於測試的字串”;
--Level 1
byte[] compressed =QuickLZ.compress(s.getBytes(), 1); --返回壓縮後的字串的位元組陣列
--Level3
byte[] compressed =QuickLZ.compress(s.getBytes(), 3); --返回壓縮後的字串的位元組陣列
解壓
byte[] uncompressed =QuickLZ.decompress(compressed ); --返回解壓縮後的字串的位元組陣列
預選解壓縮類庫使用介紹--Snappy
壓縮
String s = “這是一個用於測試的字串”;
byte[] compressed =Snappy.compress(s.getBytes()); --返回壓縮後的字串的位元組陣列
解壓
byte[] uncompressed =Snappy.uncompress(compressed ); --返回解壓縮後的字串的位元組陣列
預選解壓縮類庫使用介紹-- LZF
壓縮
String s = “這是一個用於測試的字串”;
byte[] compressed = LZFEncoder.encode(s.getBytes());--返回壓縮後的字串的位元組陣列
解壓
byte[] uncompressed = LZFDecoder.decode(compressed ); --返回解壓縮後的字串的位元組陣列
預選解壓縮類庫使用介紹-- JZLIB
壓縮
String s = “這是一個用於測試的字串”;
ByteArrayOutputStream out = new ByteArrayOutputStream();
DeflaterOutputStreamdout = new DeflaterOutputStream(out);
dout.write(s.getBytes());
dout.close(); --需要先關閉
byte[] compressed = out.toByteArray(); --返回壓縮後的字串的位元組陣列
解壓
ByteArrayOutputStream out= new ByteArrayOutputStream();
ByteArrayInputStreamin = new ByteArrayInputStream(compressedStr);
InflaterInputStream input = new InflaterInputStream(in);
byte[] buffer = new byte[1024];
intoffset = -1;
while ((offset = input.read(buffer)) != -1) {
out.write(buffer, 0, offset);
}
out.close(); --需要先關閉
byte[] uncompressed = out.toByteArray(); --返回解壓縮後的字串的位元組陣列