Я действительно вынужден читать () Streamreader, читая Ionic.zlib.gzipstream?

Я использую следующий код, чтобы распаковать 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, поэтому это очень странно.

9
задан Erwin Mayer 18 September 2011 в 17:19
поделиться