GZip页脚中的流大小与实际流大小不匹配

时间:2012-05-14 16:15:23

标签: c# gzip gzipstream

我从GzipStream解压缩时遇到IO异常“GZip页脚中的流大小与实际流大小不匹配”。这个错误在100%的时间内发生在多个文件上,因此我不认为这是一个“真正的”损坏的文件问题。

压缩代码如下:

 using (var fileStream = fileInfo.OpenRead())
            {
                using (var outFile = File.Create(Path.Combine(backupLocation, backupFileName.ToString())))
                {
                    using (var gzCompressionStream = new GZipStream(outFile, CompressionMode.Compress))
                    {
                        fileStream.CopyTo(gzCompressionStream);
                    }
                }
            }

抛出异常的解压缩代码如下:

using (var fileStream = fileInfo.OpenRead())
            {
                // remove the extension
                var fileName = fileInfo.Name;
                var originalName = fileName.Remove(fileName.Length - fileInfo.Extension.Length);

                using (var outFile = File.Create(Path.Combine(transferLocation, originalName)))
                {
                    using (var gzDecompressionStream = new GZipStream(fileStream,CompressionMode.Decompress))
                    {
                        gzDecompressionStream.CopyTo(outFile);
                    }
                }
            }

1 个答案:

答案 0 :(得分:1)

所有,谢谢你的帮助 - 看起来我找到了问题。我只是在压缩文件大小超过4GB时出现错误,在此之下一切正常, - 这应该不是问题,因为MSDN表明GZipStream适用于.Net的文件大小高达8GB 4(我正在使用),最大文件大小将始终低于6GB(应用程序限制)。以前版本的GZipStream仅支持最高4GB - 在这种情况下看起来好像MSDN文档不正确。