我试图读取如下压缩的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而不捕获异常?
发布于 2019-02-23 16:16:12
是否有一种方法可以确定使用BinaryReader是否发生eof而不捕获异常?
不是个好主意。从技术上讲,您可以将GZipStream封装在自定义流中,该流支持使用小型缓冲区进行查找。但这不值得你这么做。
在执行IO的代码路径中,捕获异常的成本不高。
https://stackoverflow.com/questions/54843424
复制相似问题