我正在尝试读取压缩的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是否发生而没有捕获异常?
答案 0 :(得分:0)
是否可以使用BinaryReader来确定eof是否发生而没有捕获异常?
不是一个好人。从技术上讲,您可以将GZipStream包装在支持使用小缓冲区进行查找的自定义流中。但这不值得付出努力。
在执行IO的代码路径中,捕获异常的代价微不足道。