You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java使用replaceAll()替换CSV文本文件行内容不生效问题求助

问题根因
  • 核心错误是oldUser与newUser的取值写反:你要搜索的文件中现有行是带NAME HERE的内容,但代码里把带NEW NAME的字符串赋值给了oldUser作为搜索目标,目标内容根本不存在于文件中,自然不会触发替换逻辑。
  • 额外优化点:你是字面量精确匹配,不需要用replaceAll+Pattern.quote的组合,直接调用String.replace()方法即可,该方法默认替换所有匹配的字面量字符串,无需额外处理正则转义。
修正后的代码
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException {
        // 修正:oldUser填文件中现存的要被替换的内容,newUser填替换后的内容
        String oldUser = "AABBCCDD,NAME HERE,emailhere@gmail.com,CITY HERE CITY,12/31/2000,11112223333,8000";
        String newUser = "AABBCCDD,NEW NAME,emailhere@gmail.com,CITY HERE CITY,12/31/2000,11112223333,8000";
        String filepath = "person.txt";

        // 读取文件内容,用try-with-resources自动释放资源
        StringBuilder bufferedList = new StringBuilder();
        try (Scanner scanner = new Scanner(new File(filepath))) {
            while (scanner.hasNextLine()){
                bufferedList.append(scanner.nextLine()).append(System.lineSeparator());
            }
        }
        String personContents = bufferedList.toString();
        System.out.println("old data: " + personContents);

        // 直接用replace做字面量全替换即可
        personContents = personContents.replace(oldUser, newUser);

        // 写入文件,try-with-resources会自动关流、刷新缓冲区
        try (FileWriter writer = new FileWriter(filepath)) {
            System.out.println("new data: " + personContents);
            writer.write(personContents);
        }
    }
}

内容的提问来源于stack exchange,提问作者Therone Almadin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:15:03