是否可以检测 BinaryReader.ReadBytes(int) 是否到达流的末尾?

Is it possible to detect if BinaryReader.ReadBytes(int) reaches the end of a stream?

大多数 BinaryReader 的读取方法在到达流末尾时抛出 EndOfStreamException,但奇怪的是 ReadBytes 方法不会。但是,如果我仍然想抛出 EndOfStreamException 怎么办?我该如何检测?

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

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

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