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

Java如何删除文本文件中匹配指定姓名的起始到结束整段记录

Java实现删除文本文件中指定姓名对应整段记录

实现思路

  • 你的文本每条记录以空行分隔,首行固定为Name: 姓名格式,所以先按行读取内容,按空行拆分出单条完整记录
  • 比对每条记录的首行姓名,匹配到目标姓名就丢弃该记录,其余记录保留
  • 先把保留的内容写入临时文件,再替换原文件,避免读取写入同个文件出错,也防止操作失误丢失数据

完整示例代码

import java.io.*;
import java.util.Scanner;

public class DeleteRecordByName {
    public static void main(String[] args) {
        // 原文件路径,可替换为你的文件实际路径
        String filePath = "records.txt";
        String tempFilePath = "temp_records.txt";
        
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要删除的姓名:");
        String targetName = scanner.nextLine().trim();
        // 拼接匹配的首行格式
        String targetLine = "Name: " + targetName;
        
        try (
            BufferedReader br = new BufferedReader(new FileReader(filePath));
            BufferedWriter bw = new BufferedWriter(new FileWriter(tempFilePath))
        ) {
            String line;
            // 标记当前遍历的段落是否为要删除的段落
            boolean isNeedDelete = false;
            
            while ((line = br.readLine()) != null) {
                // 遇到空行说明上一段记录结束,重置删除标记
                if (line.trim().isEmpty()) {
                    // 不是要删除的段落就保留空行,维持原格式
                    if (!isNeedDelete) {
                        bw.newLine();
                    }
                    isNeedDelete = false;
                    continue;
                }
                
                // 遇到Name开头的行,判断是否为目标姓名
                if (line.startsWith("Name: ")) {
                    isNeedDelete = line.equals(targetLine);
                }
                
                // 不需要删除的行写入临时文件
                if (!isNeedDelete) {
                    bw.write(line);
                    bw.newLine();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }
        
        // 删除原文件,将临时文件重命名为原文件名
        File originalFile = new File(filePath);
        File tempFile = new File(tempFilePath);
        if (originalFile.delete()) {
            tempFile.renameTo(originalFile);
            System.out.println("操作完成,对应记录已删除");
        } else {
            System.out.println("操作失败,无法修改原文件");
        }
        scanner.close();
    }
}

注意事项

  • 运行前请将代码中records.txt替换为你本地文本文件的实际路径
  • 采用临时文件中转的逻辑不会直接修改原文件,就算中途程序出错也不会丢失原有数据
  • 如果你需要留存被删除的记录,只需在判定段落需要删除时,将对应内容单独写入备份文件即可

内容的提问来源于stack exchange,提问作者Leonardo DaFishy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:45:03