2013-02-23 142 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