是否可以检测 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.
大多数 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.