提问者:小点点

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


大多数BinaryReader的read方法在到达流的结尾时都会抛出EndofStreamException,但奇怪的是ReadBytes方法不会。但是如果我仍然希望抛出EndofStreamException呢?我怎么察觉?

我可以使用BaseStream.position属性,但是我使用的steam不支持查找,因此这将引发NotSupportedException


共1个答案

匿名用户

我在键入问题时找到了答案。结果是,如果到达流的末尾,该方法只返回一个较短的数组。这就是您如何检测它的方法:

byte[] bytes = binaryReader.readBytes(someNumber);
if (bytes.length != someNumber)
    throw new EndOfFileException(); // Or do something else.