从包装的GZipStream中读取

时间:2019-02-23 16:08:21

标签: c# gzipstream

我正在尝试读取压缩的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。我无法读取整个文件,因为它可能太大。我无法读取字节数组,因为我之后会解析数据,因此某些字节无法拆分,必须一起解析。
 有没有一种方法可以使用BinaryReader来确定eof是否发生而没有捕获异常?

1 个答案:

答案 0 :(得分:0)

  

是否可以使用BinaryReader来确定eof是否发生而没有捕获异常?

不是一个好人。从技术上讲,您可以将GZipStream包装在支持使用小缓冲区进行查找的自定义流中。但这不值得付出努力。

在执行IO的代码路径中,捕获异常的代价微不足道。