在我的程序中,每次用户提款时,我都需要更新文本文件的“余额”列。我使用了 write 方法和追加方法,但没有效果。
用户登录后,该特定行将存储在数组中
#PIN AccountNo Balance
1598 01-10-102203-0 95000
4895 01-10-102248-0 45000
9512 01-10-102215-0 125000
6125 01-10-102248 85000
代码:
try{
BufferedWriter out = new BufferedWriter(new FileWriter(".\\AccountInfo.txt",true));
if (amount <= 0.0) {
System.out.println("can only withdraw positive amount!");
transactionScreen();
}
else if (this.balance >= amount) {
if(amount>15000.0){
System.out.println("The maximum amount allowed per transaction is only Rs.15000/=");
transactionScreen();
}
else{
this.balance -= amount;
object.c=this.balance;
String newBal=Double.toString(this.balance);
out.write("");
//out.append("");
out.write(newBal);
//out.append(newBal);
}
}
else {
System.out.println("not enough money in account!");
transactionScreen();
}
}
catch(IOException e){
e.printStackTrace();
}
执行此操作的唯一简单方法是每次进行任何更改时重写文本文件的全部内容。但这很糟糕,有几个原因:
- 它非常慢。
- 它一次只能由一个线程完成,因此不易扩展。
- 如果您的应用程序在写入期间崩溃,您可能会丢失所有数据。
您可以使用固定宽度的列来允许查找和写入文件,而不必重写整个文件,但仍然存在问题:
- 如果您需要存储的值超过列所需的宽度,那么您就会遇到问题。
- 您仍然需要读取整个文件(最坏的情况 - 平均一半)才能找到要修改的记录(在内存中保留缓存会有所帮助)。
我建议您改用数据库。您可以在本地安装一些数据库并且不需要管理(SQLite例如)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)