0

我正在写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. 这段代码有什么问题?

4

1 回答 1

1

我找到了解决方案。该类有一个自定义add()方法,每次添加内容时都会重写文件。循环开始时有 100 个条目,但执行一次后只剩下一个条目。还有一些额外的代码总是添加那些缺少的 99 个条目。

更换add()解决super.add()了问题。

于 2013-05-02T10:31:50.653 回答