📜  Java程序删除文本文件中的重复行(1)

📅  最后修改于: 2023-12-03 15:16:37.471000             🧑  作者: Mango

Java程序删除文本文件中的重复行

本文介绍了使用Java编程语言编写一个程序来删除文本文件中的重复行。程序将读取给定文本文件,识别并删除重复行,然后将处理后的结果写入新的文件。

实现思路

为了删除文本文件中的重复行,我们可以使用以下步骤来实现:

  1. 使用Java的文件I/O相关的类(如FileReaderFileWriterBufferedReader等)来读取和写入文本文件。
  2. 创建一个HashSetLinkedHashSet来存储已经出现过的行,这将帮助我们判断行是否重复。
  3. 逐行读取原始文本文件。对于每一行,我们将检查它是否存在于HashSet中。如果存在,则表明该行是重复的,我们将跳过该行;否则,我们将将其添加到HashSet中,并将其写入新文件。
  4. 完成文本文件的读取和写入后,我们将关闭文件读取器和写入器,并删除原始文件。
  5. 最后,我们将修改新文件的名称,使其与原始文件相同。

以下是一个示例的Java代码来演示如何实现这个思路:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;

public class RemoveDuplicateLines {

    public static void main(String[] args) {
        // 输入和输出文件的路径
        String inputFilePath = "input.txt";
        String outputFilePath = "output.txt";
        
        // 创建一个HashSet来存储已经出现过的行
        HashSet<String> linesSet = new HashSet<>();
        
        try (BufferedReader reader = new BufferedReader(new FileReader(inputFilePath));
             BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath))) {
            
            String line;
            
            // 逐行读取原始文件
            while ((line = reader.readLine()) != null) {
                // 如果该行不在HashSet中,则将其写入新文件并添加到HashSet中
                if (!linesSet.contains(line)) {
                    writer.write(line);
                    writer.newLine();
                    linesSet.add(line);
                }
            }
            
            // 删除原始文件
            File inputFile = new File(inputFilePath);
            inputFile.delete();
            
            // 修改新文件的名称
            File outputFile = new File(outputFilePath);
            outputFile.renameTo(inputFile);
            
            System.out.println("重复行已经成功删除并保存到新文件中。");
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上代码将从名为"input.txt"的文件中读取文本内容,并删除其中的重复行后,将结果保存到名为"output.txt"的新文件中。原始文件将被删除,并且新文件的名称将修改为"input.txt"。

请注意,此示例代码只是提供了一种实现删除重复行的方式。根据实际需要,您可能需要进行修改以适应特定的文件结构和需求。