📅  最后修改于: 2023-12-03 14:42:19.322000             🧑  作者: Mango
如果你需要在 Java 中比较两个 CSV 文件,你可以使用以下方法:
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.csv
和 file2.csv
中逐行比较数据,并输出不同行的行号。
如果你在使用 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 实现该功能。