deflater java_java.util.zip 类 Deflater - Java 中文参考手册
java.lang.Object
java.util.zip.Deflater
public class Deflaterextends Object
此類使用流行的 ZLIB 壓縮程序庫為通用壓縮提供支持。ZLIB 壓縮程序庫最初是作為 PNG 圖形標準的一部分開發的,不受專利的保護。有關該規范的完整描述,請參見 java.util.zip 包描述。
以下代碼片段演示使用 Deflater 和 Inflater 壓縮和解壓縮字符串的詳細過程。
// 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");
另請參見:Inflater
字段摘要
staticint
BEST_COMPRESSION
最佳壓縮的壓縮級別。
staticint
BEST_SPEED
最快壓縮的壓縮級別。
staticint
DEFAULT_COMPRESSION
默認壓縮級別。
staticint
DEFAULT_STRATEGY
默認壓縮策略。
staticint
DEFLATED
deflate 算法(當前支持的惟一算法)的壓縮方法。
staticint
FILTERED
最適用于主要由小值組成并具有某種程度隨意分布的數據的壓縮策略。
staticint
HUFFMAN_ONLY
僅適用于 Huffman 編碼的壓縮策略。
staticint
NO_COMPRESSION
無壓縮的壓縮級別。
構造方法摘要
Deflater()
使用默認壓縮級別創建新的壓縮器。
Deflater(intlevel)
使用指定壓縮級別創建新的壓縮器。
Deflater(intlevel,
booleannowrap)
使用指定壓縮級別創建新的壓縮器。
方法摘要
int
deflate(byte[]b)
使用壓縮數據填充指定緩沖區。
int
deflate(byte[]b,
intoff,
intlen)
使用壓縮數據填充指定緩沖區。
void
end()
關閉解壓縮器并放棄所有未處理的輸入。
protected void
finalize()
回收垃圾時關閉壓縮器。
void
finish()
調用時,指示壓縮應當以輸入緩沖區的當前內容結尾。
boolean
finished()
如果已到達壓縮數據輸出流的結尾,則返回 true。
int
getAdler()
返回未壓縮數據的 ADLER-32 值。
long
getBytesRead()
返回到目前為止輸入未壓縮字節的總數。
long
getBytesWritten()
返回到目前為止輸出壓縮字節的總數。
int
getTotalIn()
返回到目前為止輸入未壓縮字節的總數。
int
getTotalOut()
返回到目前為止輸出壓縮字節的總數。
boolean
needsInput()
如果輸入數據緩沖區為空,并且應調用 setInput() 以提供更多輸入,則返回 true。
void
reset()
重置 deflater 以處理新的輸入數據集合。
void
setDictionary(byte[]b)
為壓縮預置字典。
void
setDictionary(byte[]b,
intoff,
intlen)
為壓縮設置預置字典。
void
setInput(byte[]b)
為壓縮設置輸入數據。
void
setInput(byte[]b,
intoff,
intlen)
為壓縮設置輸入數據。
void
setLevel(intlevel)
將當前壓縮級別設置為指定值。
void
setStrategy(intstrategy)
將壓縮策略設置為指定值。
從類 java.lang.Object 繼承的方法
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
字段詳細信息
DEFLATED
public static final int DEFLATED
deflate 算法(當前支持的惟一算法)的壓縮方法。
另請參見:常量字段值
NO_COMPRESSION
public static final int NO_COMPRESSION
無壓縮的壓縮級別。
另請參見:常量字段值
BEST_SPEED
public static final int BEST_SPEED
最快壓縮的壓縮級別。
另請參見:常量字段值
BEST_COMPRESSION
public static final int BEST_COMPRESSION
最佳壓縮的壓縮級別。
另請參見:常量字段值
DEFAULT_COMPRESSION
public static final int DEFAULT_COMPRESSION
默認壓縮級別。
另請參見:常量字段值
FILTERED
public static final int FILTERED
最適用于主要由小值組成并具有某種程度隨意分布的數據的壓縮策略。強制使用較多的 Huffman 編碼和較少的字符串匹配。
另請參見:常量字段值
HUFFMAN_ONLY
public static final int HUFFMAN_ONLY
僅適用于 Huffman 編碼的壓縮策略。
另請參見:常量字段值
DEFAULT_STRATEGY
public static final int DEFAULT_STRATEGY
默認壓縮策略。
另請參見:常量字段值
構造方法詳細信息
Deflater
public Deflater(intlevel,
booleannowrap)
使用指定壓縮級別創建新的壓縮器。如果 ‘nowrap’ 為 true,則不使用 ZLIB 頭和校驗和字段,以便支持在 GZIP 和 PKZIP 中使用的壓縮格式。
參數:level – 壓縮級別 (0-9)nowrap – 如果為 true ,則使用 GZIP 兼容的壓縮
Deflater
public Deflater(intlevel)
使用指定壓縮級別創建新的壓縮器。壓縮的數據將以 ZLIB 格式生成。
參數:level – 壓縮級別 (0-9)
Deflater
public Deflater()
使用默認壓縮級別創建新的壓縮器。壓縮的數據將以 ZLIB 格式生成。
方法詳細信息
setInput
public void setInput(byte[]b,
intoff,
intlen)
為壓縮設置輸入數據。此方法應該在 needsInput() 返回 true 時調用,以指示需要更多的輸入數據。
參數:b – 輸入數據字節off – 數據的初始偏移量len – 數據的長度另請參見:needsInput()
setInput
public void setInput(byte[]b)
為壓縮設置輸入數據。此方法應該在 needsInput() 返回 true 時調用,以指示需要更多的輸入數據。
參數:b – 輸入數據字節另請參見:needsInput()
setDictionary
public void setDictionary(byte[]b,
intoff,
intlen)
為壓縮設置預置字典。預置字典在歷史緩沖區可預定時使用。當以后使用 Inflater.inflate() 取消壓縮數據時,可以調用 Inflater.getAdler() 來獲取解壓縮所需字典的 Adler-32 值。
參數:b – 字典數據字節off – 數據的初始偏移量len – 數據的長度另請參見:Inflater.inflate(byte[], int, int),
Inflater.getAdler()
setDictionary
public void setDictionary(byte[]b)
為壓縮預置字典。預置字典在歷史緩沖區可預定時使用。當以后使用 Inflater.inflate() 取消壓縮數據時,可以調用 Inflater.getAdler() 來獲取解壓縮所需字典的 Adler-32 值。
參數:b – 字典數據字節另請參見:Inflater.inflate(byte[], int, int),
Inflater.getAdler()
setStrategy
public void setStrategy(intstrategy)
將壓縮策略設置為指定值。
參數:strategy – 新的壓縮策略拋出:IllegalArgumentException – 如果壓縮策略無效
setLevel
public void setLevel(intlevel)
將當前壓縮級別設置為指定值。
參數:level – 新的壓縮級別 (0-9)拋出:IllegalArgumentException – 如果壓縮級別無效
needsInput
public boolean needsInput()
如果輸入數據緩沖區為空,并且應調用 setInput() 以提供更多輸入,則返回 true。
返回:如果輸入數據緩沖區為空,并且應調用 setInput() 以提供更多輸入,則返回 true
finish
public void finish()
調用時,指示壓縮應當以輸入緩沖區的當前內容結尾。
finished
public boolean finished()
如果已到達壓縮數據輸出流的結尾,則返回 true。
返回:如果已到達壓縮數據輸出流的結尾,則返回 true
deflate
public int deflate(byte[]b,
intoff,
intlen)
使用壓縮數據填充指定緩沖區。返回壓縮數據的實際字節數。返回值為 0 指示應調用 needsInput() 來確定是否需要更多的輸入數據。
參數:b – 壓縮數據的緩沖區off – 數據的初始偏移量len – 壓縮數據的最大字節數返回:壓縮數據的實際字節數
deflate
public int deflate(byte[]b)
使用壓縮數據填充指定緩沖區。返回壓縮數據的實際字節數。返回值為 0 指示應調用 needsInput() 來確定是否需要更多的輸入數據。
參數:b – 壓縮數據的緩沖區返回:壓縮數據的實際字節數
getAdler
public int getAdler()
返回未壓縮數據的 ADLER-32 值。
返回:未壓縮數據的 ADLER-32 值
getTotalIn
public int getTotalIn()
返回到目前為止輸入未壓縮字節的總數。
由于該字節數可能大于 Integer.MAX_VALUE,因此 getBytesRead() 方法現在是獲取此信息的首選方法。
返回:到目前為止輸入未壓縮字節的總數
getBytesRead
public long getBytesRead()
返回到目前為止輸入未壓縮字節的總數。
返回:到目前為止輸入未壓縮字節的總數(非負)
getTotalOut
public int getTotalOut()
返回到目前為止輸出壓縮字節的總數。
由于該字節數可能大于 Integer.MAX_VALUE,因此 getBytesWritten() 方法現在是獲取此信息的首選方法。
返回:到目前為止輸出壓縮字節的總數
getBytesWritten
public long getBytesWritten()
返回到目前為止輸出壓縮字節的總數。
返回:到目前為止輸出壓縮字節的總數(非負)
reset
public void reset()
重置 deflater 以處理新的輸入數據集合。保持當前壓縮級別和策略設置。
end
public void end()
關閉解壓縮器并放棄所有未處理的輸入。此方法應該在不再使用該壓縮器時調用,但是也可以由 finalize() 方法自動調用。調用此方法后,Deflater 對象的行為將是不確定的。
finalize
protected void finalize()
回收垃圾時關閉壓縮器。
覆蓋:類 Object 中的 finalize
總結
以上是生活随笔為你收集整理的deflater java_java.util.zip 类 Deflater - Java 中文参考手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中科院计算机学院王宏,王宏-中国科学院大
- 下一篇: java美元兑换,(Java实现) 美元