2011-10-27 53 views
0

我正在使用Java。如何輸出GZIP格式的deflater的結果?

我想使用Deflater class來縮減一些輸入,然後我想輸出它爲GZIP格式,因此可以使用GZIP解壓縮。我怎樣才能做到這一點?我的理解是它會以不同的格式輸出它。我是一個noob,所以如果你可以明確,也許給一個代碼示例,這將是超級有用的。

我不能使用GZIPOutputStream,因爲我需要在輸出前使用一些Deflater類的特定功能。

+0

你需要什麼Deflater類功能? –

+0

setDictionary函數。 –

回答

2

顯然GZIPOutputStream無論如何都在使用Deflater,所以你並沒有試圖做任何瘋狂的事情。

一種可能性(從this page,這可能值得一讀)是子類GZIPOutputStream,以便您可以訪問其Deflater對象。東西或多或少像這樣(未經):

public class MyGZIPOutputStream extends GZIPOutputStream { 

    public MyGZIPOutputStream(final OutputStream out) throws IOException { 
    super(out); 
    } 

    public void setDictionary(byte[] b) { 
    def.setDictionary(b); 
    } 

} 

然後您就可以使用您的MyGZIPOutputStream保存該文件之前,請務必setDictionary電話。

變量defGZIPOutputStream的受保護成員,因此需要子類化來訪問它。

0

第一個問題是爲什麼?

GZIPping Deflater的輸出意味着收件人必須同時使用Gunzip和inflate。

GZIPping Deflater的輸出可能會增加大小。它肯定不會顯着壓縮它。

如果你需要GZIP輸出,忘記Deflater。

如果你需要字典,忘記GZIP輸出。

+0

我不想GZIP輸出,我想輸出它在GZIP格式,以便它可以使用GZIP解壓縮。基本上,我正在使用Deflate實施GZIP。這與一個學校項目有關,因此可能存在一些奇怪之處。 –