Я использую следующий код, чтобы распаковать gzipstream (используя библиотеку dotnetzip ), где FS - это FILESTER Указывая на файл GZ (с filemode.Open, fileакцессом.read, fileshare.readwrite):
using (var gz = new GZipStream(fs, CompressionMode.Decompress)) {
using (var sr = new StreamReader(gz)) {
header = sr.ReadLine();
}
}
, но если файл не читается до конца (который я предпочитаю делать, если не нужен, как файл может быть огромным), Это броски
Zlibexception («Bad CRC32 в прицепе Gzip. (Фактический (EC084966)! = Ожидаемый (8FC3EF16))«)
на первом закрывающем кронштейне (на самом деле при попытке закрыть () StreameReader.
Теперь, если вызовите Readteend (), прежде чем закрывать Streamreader (или я прочитал все строки, используя цикл While While (! Sr.endofStream)), он работает. Я наблюдал то же поведение с сжатым файлом 500 МБ и 200 КБ, поэтому кажется, что оно не связано с размером файла.
Ваше понимание очень добро пожаловать!
Вот ссылка на простой выделенный тестовый проект .
Это работает с библиотекой System.io.gzipstream, поэтому это очень странно.