java如何使用csv
使用 Java 处理 CSV 文件
Java 提供了多种方式来处理 CSV 文件,以下是几种常见的方法:
使用 OpenCSV 库
OpenCSV 是一个流行的 Java 库,专门用于处理 CSV 文件。以下是基本的使用示例:
import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
// 读取 CSV 文件
try (CSVReader reader = new CSVReader(new FileReader("input.csv"))) {
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
for (String value : nextLine) {
System.out.print(value + " ");
}
System.out.println();
}
}
// 写入 CSV 文件
try (CSVWriter writer = new CSVWriter(new FileWriter("output.csv"))) {
String[] header = {"Name", "Age", "City"};
writer.writeNext(header);
String[] data = {"John", "25", "New York"};
writer.writeNext(data);
}
使用 Apache Commons CSV
Apache Commons CSV 是另一个强大的库,支持多种 CSV 格式:
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVPrinter;
import org.apache.commons.csv.CSVRecord;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
// 读取 CSV 文件
try (Reader reader = new FileReader("input.csv");
CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT)) {
for (CSVRecord record : csvParser) {
String name = record.get(0);
String age = record.get(1);
System.out.println("Name: " + name + ", Age: " + age);
}
}
// 写入 CSV 文件
try (Writer writer = new FileWriter("output.csv");
CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT)) {
csvPrinter.printRecord("Name", "Age", "City");
csvPrinter.printRecord("John", 25, "New York");
}
使用 Java 原生方法
如果不想依赖外部库,可以使用 Java 原生的方法处理 CSV 文件:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
// 读取 CSV 文件
try (BufferedReader br = new BufferedReader(new FileReader("input.csv"))) {
String line;
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
for (String value : values) {
System.out.print(value + " ");
}
System.out.println();
}
}
// 写入 CSV 文件
try (FileWriter writer = new FileWriter("output.csv")) {
writer.append("Name,Age,City\n");
writer.append("John,25,New York\n");
}
处理包含特殊字符的 CSV
如果 CSV 文件包含逗号或引号等特殊字符,建议使用专门的库(如 OpenCSV 或 Apache Commons CSV)来处理:

// 使用 OpenCSV 处理带引号的字段
CSVReader reader = new CSVReaderBuilder(new FileReader("input.csv")).withSkipLines(1).build();
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
System.out.println(Arrays.toString(nextLine));
}
以上方法可以根据具体需求选择使用。对于简单的 CSV 文件,Java 原生方法可能足够;对于复杂的 CSV 文件,推荐使用专门的库。






