このコードは、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
あなたの質問が例外を処理する方法か、または例外が全く起こっていない理由は明らかではありません。 –