首页 > 解决方案 > 是否可以检测 BinaryReader.ReadBytes(int) 是否到达流的末尾?

问题描述

大多数BinaryReader的 read 方法都会抛出一个EndOfStreamExceptionif 它到达流的末尾,但奇怪的是该ReadBytes方法没有。但是,如果我仍然想扔一个EndOfStreamException怎么办?我该如何检测?

我可以使用该BaseStream.Position属性,但我使用的蒸汽不支持搜索,所以这会抛出一个NotSupportedException.

标签: c#iobinaryreader

解决方案


我在输入我的问题时找到了答案。事实证明,如果到达流的末尾,该方法只返回一个较短的数组。所以这就是你可以检测它的方法:

byte[] bytes = binaryReader.ReadBytes(someNumber);
if (bytes.Length != someNumber)
    throw new EndOfStreamException(); // Or do something else.

推荐阅读