我正在尝试使用GZipStream来编写一些应用程序跟踪(它们在生产中往往会变得很大)。所以在这种情况下,我需要能够打开现有文件并使用GZipStream附加到它。在我们尝试解压缩文件之前,所有事情似乎都运行良好。似乎在解压缩时,GZipStream只读取第一块数据,然后表现得像达到EOF(即使文件包含更多)。奇怪的是,当使用Windows或Winrar打开文件时,所有数据似乎都存在并正确提取。 有没有人遇到过这个问题?
答案 0 :(得分:2)
我遇到了同样的问题。 我们的想法是实现类似http://zlib.net/pigz/所做的事情
答案 1 :(得分:1)
我花了很长时间才弄明白。标准的C#实现,GZipStream有一个错误,它不支持连接的gzip文件。它只会解压缩从串联创建的gzip文件的第一部分,并在此之后报告流的结尾。
这是一个适用于连续gzip文件的示例:
new StreamReader(new ICSharpCode.SharpZipLib.GZip.GZipInputStream(Console.OpenStandardInput()));
您可以从nuget获得所需的库。我推荐jetbrain的版本,JetBrains.SharpZLib.Stripped。当我尝试在.net核心项目中使用其他选项时,Nuget引发了错误