我正在写入一个RandomAccessFile
,如下所示:(在 LinkedList 的子类中)
file.setLength(0);
for (Person person : this)
file.writeUTF(person.getBlob());
Person.getBlob()
返回一个固定长度的字符串,仅包含基本字母数字字符、空格和 CR(仅一字节字符)。此时文件正好包含 100 条记录。 (用十六进制编辑器确认)
然后我尝试读取该文件:
int counter = 0;
while (true) {
try {
add(Person.fromBlob(file.readUTF()));
} catch (EOFException e) {
System.out.println(counter + " records read from file.");
break;
} catch (Exception exception) {
throw new DBException(exception);
}
counter++;
}
我总是以正确读取一条记录和 EOFException
结束。这段代码有什么问题?
最佳答案
我已经找到解决办法了。该类有一个自定义的 add()
方法,每次添加内容时都会重写文件。循环开始时有 100 个条目,但执行一次后只剩下一个条目。还有一些额外的代码总是添加那些缺失的 99 个条目。
用 super.add()
替换 add()
解决了问题。
关于java - readUTF 工作一次,然后抛出 EOFException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16327748/