Этот код возвращает исключение 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
Можете ли вы поделиться своим стеклом stacktrace, чтобы найти, где вы получаете исключение? Это в файле.seek? – Learner
Неясно, как ваш вопрос заключается в том, как обрабатывать исключение, или почему исключение вообще происходит. –