此代碼返回一個EOFException,有關要添加什麼或如何處理該問題的任何建議?如何處理EOFException?
public AbstractBlock readBlock(int blockNum, AbstractDBFile f)
throws IOException {
DBFile dbf = (DBFile) f;
byte[] data2 = new byte[4096];
RandomAccessFile file = new RandomAccessFile(dbf.fileName, "r");
file.seek(4096+blockNum*4096);
Block b = new Block();
for (int i = 0; i < 4096; i++){
data2[i] = file.readByte();
}
file.close();
b.setData(data2);
return b;
}
儘管它超出了這個問題的範圍,但是逐字節地遍歷文件是非常低效的。你應該使用'byte [] buffer = new byte [4096]; int count = file.read(buffer,0,buffer.length);'。 – sturcotte06
你可以分享你的異常棧跟蹤來找到你異常的地方嗎?它在file.seek中嗎? – Learner
目前還不清楚你的問題是如何處理異常,或者爲什麼發生異常。 –