JavaTM 2 Platform
Standard Ed. 6

java.util.zip
類別 Inflater

java.lang.Object
  繼承者 java.util.zip.Inflater

public class Inflater
extends Object

此類別使用串流行的 ZLIB 壓縮程序資源庫為通用解壓縮提供支持。ZLIB 壓縮程序資源庫最初是作為 PNG 圖形標準的一部分開發的,不受專利的保護。有關該規範的完整描述,請參見 java.util.zip 套件描述

以下程式碼片段演示使用 DeflaterInflater 壓縮和解壓縮字元串的詳細過程。

 try {
 // Encode a String into bytes
 String inputString = "blahblahblah??";
 byte[] input = inputString.getBytes("UTF-8");

 // Compress the bytes
 byte[] output = new byte[100];
 Deflater compresser = new Deflater();
 compresser.setInput(input);
 compresser.finish();
 int compressedDataLength = compresser.deflate(output);

 // Decompress the bytes
 Inflater decompresser = new Inflater();
 decompresser.setInput(output, 0, compressedDataLength);
 byte[] result = new byte[100];
 int resultLength = decompresser.inflate(result);
 decompresser.end();

 // Decode the bytes into a String
 String outputString = new String(result, 0, resultLength, "UTF-8");
 } catch(java.io.UnsupportedEncodingException ex) {
     // handle
 } catch (java.util.zip.DataFormatException ex) {
     // handle
 }
 

另請參見:
Deflater

建構子摘要
Inflater()
          創建新的解壓縮器。
Inflater(boolean nowrap)
          創建新的解壓縮器。
 
方法摘要
 void end()
          關閉解壓縮器並放棄所有未處理的輸入。
protected  void finalize()
          回收垃圾時關閉解壓縮器。
 boolean finished()
          如果已到達壓縮資料串流的結尾,則返回 true。
 int getAdler()
          返回未壓縮資料的 ADLER-32 值。
 long getBytesRead()
          返回到目前為止輸入壓縮位元組的總數。
 long getBytesWritten()
          返回到目前為止輸出未壓縮位元組的總數。
 int getRemaining()
          返回輸入緩衝區中剩餘的位元組總數。
 int getTotalIn()
          返回到目前為止輸入壓縮位元組的總數。
 int getTotalOut()
          返回到目前為止輸出未壓縮位元組的總數。
 int inflate(byte[] b)
          將位元組解壓縮到指定的緩衝區。
 int inflate(byte[] b, int off, int len)
          將位元組解壓縮到指定的緩衝區。
 boolean needsDictionary()
          如果解壓縮需要預置字典,則返回 true。
 boolean needsInput()
          如果輸入緩衝區中沒有剩餘資料,則返回 true。
 void reset()
          重置 inflater 以處理新的輸入資料集。
 void setDictionary(byte[] b)
          為給定位元組的陣列設置預置字典。
 void setDictionary(byte[] b, int off, int len)
          為給定的位元組陣列設置預置字典。
 void setInput(byte[] b)
          為解壓縮設置輸入資料。
 void setInput(byte[] b, int off, int len)
          為解壓縮設置輸入資料。
 
從類別 java.lang.Object 繼承的方法
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

Inflater

public Inflater(boolean nowrap)
創建新的解壓縮器。如果參數 'nowrap' 為 true,則不使用 ZLIB 頭和校驗和欄位。這提供了與 GZIP 和 PKZIP 所用壓縮格式的相容性。

註:使用 'nowrap' 選項時,還需要提供額外的 "dummy" 位元組作為輸入。當 ZLIB 本機資源庫需要支持某些優化時,這是必需的。

參數:
nowrap - 如果為 true,則支持 GZIP 相容的壓縮

Inflater

public Inflater()
創建新的解壓縮器。

方法詳細資訊

setInput

public void setInput(byte[] b,
                     int off,
                     int len)
為解壓縮設置輸入資料。應該在 needsInput() 返回 true 時進行調用,以指示需要更多的輸入資料。

參數:
b - 輸入資料位元組
off - 輸入資料的初始偏移量
len - 輸入資料的長度
另請參見:
needsInput()

setInput

public void setInput(byte[] b)
為解壓縮設置輸入資料。應該在 needsInput() 返回 true 時進行調用,以指示需要更多的輸入資料。

參數:
b - 輸入資料位元組
另請參見:
needsInput()

setDictionary

public void setDictionary(byte[] b,
                          int off,
                          int len)
為給定的位元組陣列設置預置字典。應該在 inflate() 返回 0 且 needsDictionary() 返回 true 時進行調用,以指示需要預置字典。可以使用方法 getAdler() 獲取所需字典的 Adler-32 值。

參數:
b - 字典資料位元組
off - 資料的初始偏移量
len - 資料的長度
另請參見:
needsDictionary(), getAdler()

setDictionary

public void setDictionary(byte[] b)
為給定位元組的陣列設置預置字典。應該在 inflate() 返回 0 且 needsDictionary() 返回 true 時調用,以指示需要預置字典。可以使用方法 getAdler() 獲取所需字典的 Adler-32 值。

參數:
b - 字典資料位元組
另請參見:
needsDictionary(), getAdler()

getRemaining

public int getRemaining()
返回輸入緩衝區中剩餘的位元組總數。該方法可用於尋找在完成解壓縮後輸入緩衝區中還有哪些位元組。

返回:
輸入緩衝區中剩餘的位元組總數

needsInput

public boolean needsInput()
如果輸入緩衝區中沒有剩餘資料,則返回 true。此方法用於確定是否調用 #setInputThis 以提供更多輸入。

返回:
如果緩衝區中沒有剩餘資料,則返回 true

needsDictionary

public boolean needsDictionary()
如果解壓縮需要預置字典,則返回 true。

返回:
如果解壓縮需要預置字典,則返回 true
另請參見:
setDictionary(byte[], int, int)

finished

public boolean finished()
如果已到達壓縮資料串流的結尾,則返回 true。

返回:
如果已到達壓縮資料串流的結尾,則返回 true

inflate

public int inflate(byte[] b,
                   int off,
                   int len)
            throws DataFormatException
將位元組解壓縮到指定的緩衝區。返回實際的未壓縮位元組數。返回值為 0 指示應調用 needsInput() 或 needsDictionary(),以確定是否需要更多的輸入資料或預置字典。在後一種情況下,getAdler() 可用於獲取所需字典的 Adler-32 值。

參數:
b - 未壓縮資料的緩衝區
off - 資料的初始偏移量
len - 最大未壓縮位元組數
返回:
實際未壓縮位元組數
拋出:
DataFormatException - 如果壓縮資料格式無效
另請參見:
needsInput(), needsDictionary()

inflate

public int inflate(byte[] b)
            throws DataFormatException
將位元組解壓縮到指定的緩衝區。返回實際的未壓縮位元組數。返回值為 0 指示應調用 needsInput() 或 needsDictionary(),以確定是否需要更多的輸入資料或預置字典。在後一種情況下,getAdler() 可用於獲取所需字典的 Adler-32 值。

參數:
b - 未壓縮資料的緩衝區
返回:
實際未壓縮位元組數
拋出:
DataFormatException - 如果壓縮資料格式無效
另請參見:
needsInput(), needsDictionary()

getAdler

public int getAdler()
返回未壓縮資料的 ADLER-32 值。

返回:
未壓縮資料的 ADLER-32 值

getTotalIn

public int getTotalIn()
返回到目前為止輸入壓縮位元組的總數。

由於該位元組數可能大於 Integer.MAX_VALUE,因此 getBytesRead() 方法現在是獲取此資訊的首選方法。

返回:
到目前為止輸入壓縮位元組的總數

getBytesRead

public long getBytesRead()
返回到目前為止輸入壓縮位元組的總數。

返回:
到目前為止輸入壓縮位元組的總數(非負)。
從以下版本開始:
1.5

getTotalOut

public int getTotalOut()
返回到目前為止輸出未壓縮位元組的總數。

由於該位元組數可能大於 Integer.MAX_VALUE,因此 getBytesWritten() 方法現在是獲取此資訊的首選方法。

返回:
到目前為止輸出未壓縮位元組的總數

getBytesWritten

public long getBytesWritten()
返回到目前為止輸出未壓縮位元組的總數。

返回:
到目前為止輸出未壓縮位元組的總數(非負)
從以下版本開始:
1.5

reset

public void reset()
重置 inflater 以處理新的輸入資料集。


end

public void end()
關閉解壓縮器並放棄所有未處理的輸入。此方法應該在不再使用該解壓縮器時進行調用,但是也可以由 finalize() 方法自動調用。調用此方法後,Inflater 物件的行為將是不確定的。


finalize

protected void finalize()
回收垃圾時關閉解壓縮器。

覆寫:
類別 Object 中的 finalize

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only