我在 Java 6 中使用RandomAccessFile,但在读取字节时有一些奇怪的行为。
使用以下代码,在哪里offset
和data
被适当地初始化:
int offset;
byte data[];
randFile.readFully(data, offset, data.length);
我得到以下堆栈跟踪:
null
java.lang.IndexOutOfBoundsException
at java.io.RandomAccessFile.readBytes(Native Method)
at java.io.RandomAccessFile.read(RandomAccessFile.java:355)
at java.io.RandomAccessFile.readFully(RandomAccessFile.java:414)
但是,使用相同的offset
and值data
,以下(看似相同)代码可以正常工作!
randFile.seek(offset);
for (int i = 0; i < (data.length); i += 1) {
data[i] = randFile.readByte();
}
有人知道为什么会这样吗?