Чтение из упакованного GZipStream - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь прочитать сжатые данные gzip следующим образом:

using (var input = new BinaryReader(new GZipStream(fileStream, CompressionMode.Decompress))) 
{
    while(input.PeekChar() != -1)
    {
        //use BinaryReader methods I need
    }
}

Но свойство GZipStream CanSeek всегда false, поэтому input.PeekChar() всегда -1.
Я не хочу работать с GZipStream напрямую.Я не могу прочитать весь файл, потому что он может быть слишком большим.Я не могу прочитать байтовые массивы, потому что я анализирую данные впоследствии, поэтому некоторые байты не могут быть разделены и должны быть проанализированы вместе.
Есть ли способ определить, произошло ли eof с использованием BinaryReader без перехвата исключения?

1 Ответ

0 голосов
/ 23 февраля 2019

Есть ли способ определить, произошло ли что-либо с помощью BinaryReader без перехвата исключения?

Не очень хороший.Технически вы можете обернуть GZipStream в пользовательский поток, который поддерживает поиск с использованием небольшого буфера.Но это не стоит усилий.

Захват исключения имеет незначительную стоимость в пути кода, который выполняет ввод-вывод.

...