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
相关产品推荐
相关产品推荐

