📜  java 比较两个 csv-files-in-java (1)

📅  最后修改于: 2023-12-03 14:42:19.322000             🧑  作者: Mango

比较两个 CSV 文件的 Java 程序

如果你需要在 Java 中比较两个 CSV 文件,你可以使用以下方法:

使用 OpenCSV 库

OpenCSV 是一个提供 CSV 文件读/写支持的开源库。你可以使用它来读取和比较两个 CSV 文件。

你可以使用以下 Maven 依赖项将 OpenCSV 引入到你的项目中:

<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>5.5.0</version>
</dependency>

以下是一个使用 OpenCSV 库的示例程序,该程序比较两个 CSV 文件中的数据行并输出不同项:

import java.io.FileReader;
import com.opencsv.CSVReader;

public class CsvComparator {

    public static void main(String[] args) throws Exception {
        CSVReader reader1 = new CSVReader(new FileReader("file1.csv"));
        CSVReader reader2 = new CSVReader(new FileReader("file2.csv"));
        String[] line1, line2;
        int lineNumber = 0;
        while ((line1 = reader1.readNext()) != null && (line2 = reader2.readNext()) != null) {
            lineNumber++;
            if (!line1.equals(line2)) {
                System.out.println("Difference found in line " + lineNumber);
            }
        }
        if (reader1.readNext() != null) {
            System.out.println("File 1 has additional lines");
        }
        if (reader2.readNext() != null) {
            System.out.println("File 2 has additional lines");
        }
        reader1.close();
        reader2.close();
    }
}

这个程序在 file1.csvfile2.csv 中逐行比较数据,并输出不同行的行号。

使用 Java 8 流

如果你在使用 Java 8 或更高版本,你也可以使用 Java 8 流 API 来比较两个 CSV 文件。

以下是一个使用 Java 8 流的示例程序,该程序比较两个 CSV 文件中的数据行并输出不同项:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;

public class CsvComparator {

    public static void main(String[] args) throws IOException {
        List<String> file1 = Files.readAllLines(Paths.get("file1.csv"));
        List<String> file2 = Files.readAllLines(Paths.get("file2.csv"));
        for (int i = 0; i < file1.size() && i < file2.size(); i++) {
            String[] line1 = file1.get(i).split(",");
            String[] line2 = file2.get(i).split(",");
            if (!Arrays.equals(line1, line2)) {
                System.out.println("Difference found in line " + (i + 1));
            }
        }
        if (file1.size() > file2.size()) {
            System.out.println("File 1 has additional lines");
        } else if (file1.size() < file2.size()) {
            System.out.println("File 2 has additional lines");
        }
    }
}

这个程序使用 Files.readAllLines() 方法读取文件内容,并使用 split() 方法将每行数据分割成一个数组。然后使用 Arrays.equals() 方法比较两个数组是否相等。

结论

以上两种方法都可以用来比较两个 CSV 文件。如果你需要一个更高效的方法,你可以使用 Java 8 流API,否则你可以使用 OpenCSV 库来更方便地实现它。无论你使用哪种方法,你都可以轻松地使用 Java 实现该功能。