file.writeDouble没有写一个double

时间:2014-01-14 23:32:28

标签: java file-io randomaccessfile

我有一个文件:

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 - 然后它应该用之前保存的值加i来覆盖该double。但是这不起作用,因为值不会改变。我做错了什么?

3 个答案:

答案 0 :(得分:1)

您已打开文件仅供阅读:

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

你应该用:

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

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

或与:

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

打开以进行读写,与“rw”一样,并且还要求将文件内容的每次更新同步写入底层存储设备。

答案 1 :(得分:1)

您打开文件仅供阅读:

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

将该行更改为:

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

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

答案 2 :(得分:-2)

这是一个经典的调试错误,你应该在钱+ + i看到价值变化,文件没有变化是另一个问题,应该已经解决了文件不可写的可能性。即你应该开放写作。