从GzipStream解压缩时,出现IO异常“GZip页脚中的流大小与实际流大小不匹配”。此错误发生在多个文件的100%时间,所以我不认为这是一个“真正的”损坏的文件问题。GZip页脚中的流大小与实际流大小不匹配
压缩代码如下:
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);
}
}
}
代码看起来很合理。您是否已验证文件名是否有效(即检查一个文件是否使用硬编码名称压缩 - >解压缩)? –
抱歉不太确定我是否关注你,文件名将如何影响解压缩? – Johnv2020
即,压缩:“Source.txt” - >“compressed.compr”,解压缩:“random.file”(而不是“compressed.compr”) - >“Source.txt”(失败,因为“random.file”未压缩所有)。 –