【发布时间】:2016-03-19 01:52:46
【问题描述】:
此代码返回 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);。 -
你能分享你的异常堆栈跟踪来定位你得到异常的位置吗?是否在 file.seek 中?
-
不清楚您的问题是如何处理异常,或者为什么会发生异常。
标签: java bytearray randomaccessfile