0

我有一个文件:

RandomAccessFile file = new RandomAccessFile("files/bank.txt", "r");

我正在使用以下方法在该文件中读取和写入数据:

for (int pos = 0; pos < 1000; pos++) {

    file.seek(40 * pos + 30);
    double money = file.readDouble();

    if (pos == num) {
        money += i;
        System.out.println(money+" "+i);
        file.seek(40 * pos + 30);
        file.writeDouble(money);
    }
}

通过这种方式,它可以正确读取 double ,然后它应该用它之前保存的值覆盖该 double 加i。但是,这不起作用,因为值不会改变。我做错了什么?

4

3 回答 3

1

您打开文件仅用于阅读:

RandomAccessFile("files/bank.txt", "r");

你应该打开它:

new RandomAccessFile("files/bank.txt", "rws");

它打开读取和写入,与“rw”一样,并且还要求对文件内容或元数据的每次更新都同步写入底层存储设备。

或与:

new RandomAccessFile("files/bank.txt", "rwd");

它打开读取和写入,与“rw”一样,并且还要求对文件内容的每次更新都同步写入底层存储设备。

于 2014-01-14T23:34:19.873 回答
1

您将文件打开为只读:

RandomAccessFile file = new RandomAccessFile("files/bank.txt", "r");

将该行更改为:

RandomAccessFile file = new RandomAccessFile("files/bank.txt", "rw");

您将能够使用上面的代码进行更新。:)

于 2014-01-14T23:36:58.690 回答
-2

这是一个典型的调试错误,您应该在 money += i 处下断点以查看值的变化,文档没有变化是另一个问题,应该作为文件不可写的可能性来解决。即你应该打开写作。

于 2014-01-14T23:37:06.107 回答