字串解壓縮類庫(zip、GZIP、QuickLz、snappy、lzf、jzlib)介紹

來源:互聯網
上載者:User

標籤:

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 內部被廣泛的使用,從 BigTable到 MapReduce以及內部的RPC 系統。

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(s.getBytes());

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();

ByteArrayInputStream  in =  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();   --返回解壓縮後的字串的位元組數組

 

轉自:http://blog.csdn.net/mcpang/article/details/41141261

字串解壓縮類庫(zip、GZIP、QuickLz、snappy、lzf、jzlib)介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.