Я получаю исключение IO «Размер потока в нижнем колонтитуле GZip не соответствует реальному размеру потока» при распаковке из GzipStream. Эта ошибка составляет 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
I.e. Сжатие: «Source.txt» -> «compress.compr», декомпрессии: «random.file» (вместо «compress.compr») -> «Source.txt» (сбой, поскольку «random.file» не сжимается при все). –