如何更新.txt文件中的包含java

例如,我有一个名为file.txt的文件,其中包含个人信息(id,name,salary):

 A123 Anna 3000 A234 Alex 4000 A986 Jame 5000 

如何编写允许用户输入人员ID并补充工资的java代码? 最终输出如下:

输入ID:A123

输入补充工资:2000

运行程序后的file.txt:

 A123 Anna 5000 A234 Alex 4000 A986 Jame 5000 

这是我到目前为止所做的,但它没有工作:

 public static void addDalary() throws IOException { String ID, Nanme; double salary; Scanner console = new Scanner(System.in); System.out.print("Enter ID : "); String pID = console.nextLine(); System.out.print("Enter replenish salary: "); replenish = console.nextInt(); Scanner input = new Scanner(new File("file.txt")); while (input.hasNext()) { ID = input.next(); Name = input.next(); salary = input.nextDouble(); if (ID == pID) { salary = salary + replenish; } } input.close(); } 

我是这些东西的新手。 任何帮助都会非常感激。

您必须逐行使用从原始文件中读取它的方法。 使用新号码搜索并替换薪水。 将内容写入新的临时文件。 删除原始文件。 最后将临时文件替换为原始文件名。 这是执行此操作的代码:

 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.Scanner; public class FileContentUpdater { public static void main(String args[]) throws IOException { String ID, Name; double salary; int replenish; Scanner console = new Scanner(System.in); System.out.print("Enter ID : "); String pID = console.nextLine(); System.out.print("Enter replenish salary: "); replenish = console.nextInt(); File originalFile = new File("file.txt"); BufferedReader br = new BufferedReader(new FileReader(originalFile)); // Construct the new file that will later be renamed to the original // filename. File tempFile = new File("tempfile.txt"); PrintWriter pw = new PrintWriter(new FileWriter(tempFile)); String line = null; // Read from the original file and write to the new // unless content matches data to be removed. while ((line = br.readLine()) != null) { if (line.contains(pID)) { String strCurrentSalary = line.substring(line.lastIndexOf(" "), line.length()); if (strCurrentSalary != null || !strCurrentSalary.trim().isEmpty()) { int replenishedSalary = Integer.parseInt(strCurrentSalary.trim()) + replenish; System.out.println("replenishedSalary : " + replenishedSalary); line = line.substring(0,line.lastIndexOf(" ")) + replenishedSalary; } } pw.println(line); pw.flush(); } pw.close(); br.close(); // Delete the original file if (!originalFile.delete()) { System.out.println("Could not delete file"); return; } // Rename the new file to the filename the original file had. if (!tempFile.renameTo(originalFile)) System.out.println("Could not rename file"); } } 

一种可能的方式可以是这样的

  1. 从文件中读取每一行
  2. 拆分线

  3. 使用更新的数据准备另一行并写入临时文件

  4. 最后删除旧文件并将temp文件重命名为旧文件。

  5. 现在你完成了。 试试上面的算法。