2013-02-23 51 views
1

我正在處理日誌程序,該程序會將數據轉儲到gzip歸檔文件中。將文本追加到現有Gzip文件

的第一個條目是這樣的:

using (var fs = File.OpenWrite(logFile)) 
{ 
    using (var gs = new GZipStream(fs, CompressionMode.Compress)) 
    { 
     using (var sw = new StreamWriter(gs)) 
     { 
      sw.WriteLine(logEntry); 
     } 
    } 
} 

現在我想添加其他線路到該文件,而無需重新讀取所有的文件內容,並比它的方式,結果重新寫可以用一個GZipStream讀取。

這樣做的最好方法是什麼?

+0

如果您想要將某些內容附加到gzip/deflate流中,則必須在每次結束時執行「部分刷新」或「全部刷新」。參見[Zlib沖洗模式](http://www.bolet.org/~pornin/deflate-flush.html)。 GZipStream類不支持這些刷新模式。解決方案:不要追加或不使用GZipStream類。 – dtb 2013-02-23 18:16:39

+0

你建議使用什麼庫? – 2013-02-23 18:18:47

回答

1

您可以使用和gzlog.czlib分佈在examples目錄中。他們做你正在尋找的東西。

+0

任何機會,這是翻譯成C#? – 2013-02-24 11:39:01

+0

不是我所知道的。我會很容易做到。還有zlib的.NET接口。見http://zlib.net。 – 2013-02-24 17:58:33