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

for example i have the file named file.txt which contain personal information (id,name, salary):

A123 Anna 3000

A234 Alex 4000

A986 Jame 5000

How can I write a java code that allow user to enter an ID of a person and replenish salary?

The final output will look like:

Enter ID: A123

Enter replenish salary: 2000

file.txt after run the program:

A123 Anna 5000

A234 Alex 4000

A986 Jame 5000

This is what i have done so far but it didnt work:

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();

}

Im new to these things. Any help would be much appreciate.

解决方案

You have to use the approach of reading it from the original file line by line. Search and replace the salary with the new number. Write the content to a new temp file. Delete the original file. Finally replace the temp file to the original file name. Here is the code to do that:

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");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值