gpt4 book ai didi

java - 在java中更新文本文件的特定部分

转载 作者:行者123 更新时间:2023-11-29 10:07:32 25 4
gpt4 key购买 nike

在我的程序中,每次用户取款时我都需要更新文本文件的余额列。我同时使用了写入方法和附加方法,但无济于事。用户登录后,该特定行将存储在数组中

#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)。

关于java - 在java中更新文本文件的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3849225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com