大多数BinaryReader
的read方法在到达流的结尾时都会抛出EndofStreamException
,但奇怪的是ReadBytes
方法不会。但是如果我仍然希望抛出EndofStreamException
呢?我怎么察觉?
我可以使用BaseStream.position
属性,但是我使用的steam不支持查找,因此这将引发NotSupportedException
。
我在键入问题时找到了答案。结果是,如果到达流的末尾,该方法只返回一个较短的数组。这就是您如何检测它的方法:
byte[] bytes = binaryReader.readBytes(someNumber);
if (bytes.length != someNumber)
throw new EndOfFileException(); // Or do something else.