從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」未壓縮所有)。 –