gpt4 book ai didi

java - readUTF 工作一次,然后抛出 EOFException

转载 作者:行者123 更新时间:2023-12-01 14:37:40 25 4
gpt4 key购买 nike

我正在写入一个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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com