0

从 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);
                    }
                }
            }
4

1 回答 1

1

所有,感谢您的帮助 - 看起来我已经找到了问题。当压缩文件大小大于 4GB 时,我只会收到一个错误,在此之下一切正常,这应该不是问题,因为MSDN指出 GZipStream 适用于 .Net 4 最大 8GB 的​​文件(我'm using) 并且最大文件大小将始终低于 6GB(应用程序限制)。然而,以前版本的GZipStream仅支持高达 4GB - 在这种情况下,看起来 MSDN 文档不正确。

于 2012-05-14T21:39:56.953 回答