【问题标题】:Reading from wrapped GZipStream从包装的 GZipStream 中读取
【发布时间】:2019-02-23 16:08:20
【问题描述】:

我正在尝试像这样读取压缩的 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 而不会捕获异常?

【问题讨论】:

    标签: c# gzipstream


    【解决方案1】:

    有没有办法确定是否使用 BinaryReader 发生了 eof 而不会捕获异常?

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多