Tôi đang sử dụng một RandomAccessFile trong Java 6 nhưng có một số hành vi lạ khi đọc byte.IndexOutofBounds khi sử dụng byte đọc của Java
Với đoạn mã sau, nơi offset
và data
được khởi động một cách thích hợp:
int offset;
byte data[];
randFile.readFully(data, offset, data.length);
tôi nhận được stack trace sau:
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)
NHƯNG, với cùng một giá trị của offset
và data
, các sau (dường như giống hệt nhau) mã hoạt động tốt!
randFile.seek(offset);
for (int i = 0; i < (data.length); i += 1) {
data[i] = randFile.readByte();
}
Có ai có thông tin chi tiết về lý do này không?
Giá trị nào có 'bù trừ'? – ssantos