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