我有一个文件:
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。但是这不起作用,因为值不会改变。我做错了什么?
答案 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看到价值变化,文件没有变化是另一个问题,应该已经解决了文件不可写的可能性。即你应该开放写作。