Java中CSV操作:完整指南
CSV(逗号分隔值)是存储和交换表格数据最流行的格式之一。在Java中,有多种处理CSV文件的方式:从手动解析到使用专门的库。本文将介绍主要方法,包括Java标准工具和流行的第三方库。
1. 标准方法:手动读取CSV
对于简单项目,可以不用第三方库。使用BufferedReader和String.split():
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;
public class SimpleCSVReader { public static List<String[]> readCSV(String filePath) { List<String[]> rows = new ArrayList<>(); String line; try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { while ((line = br.readLine()) != null) { String[] values = line.split(","); rows.add(values); } } catch (IOException e) { e.printStackTrace(); } return rows; } public static void main(String[] args) { List<String[]> data = readCSV("data.csv"); for (String[] row : data) { System.out.println(String.join(" | ", row)); } }}缺点:不处理引号、字段内逗号的转义以及换行符。生产环境最好使用库。
2. OpenCSV — 强大且简单的库
OpenCSV是Java中最流行的CSV操作库之一。它解决了所有解析问题:引号、转义、不同分隔符。
安装(Maven):
<dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.9</version></dependency>使用OpenCSV读取CSV:
import com.opencsv.CSVReader;import com.opencsv.exceptions.CsvValidationException;import java.io.FileReader;import java.io.IOException;
public class OpenCSVReader { public static void main(String[] args) { try (CSVReader reader = new CSVReader(new FileReader("data.csv"))) { String[] nextLine; while ((nextLine = reader.readNext()) != null) { System.out.println(String.join(" | ", nextLine)); } } catch (IOException | CsvValidationException e) { e.printStackTrace(); } }}使用OpenCSV写入CSV:
import com.opencsv.CSVWriter;import java.io.FileWriter;import java.io.IOException;
public class OpenCSVWriter { public static void main(String[] args) { String[] header = {"Name", "Age", "Email"}; String[] row1 = {"Alice", "30", "alice@example.com"}; String[] row2 = {"Bob", "25", "bob@example.com"}; try (CSVWriter writer = new CSVWriter(new FileWriter("output.csv"))) { writer.writeNext(header); writer.writeNext(row1); writer.writeNext(row2); } catch (IOException e) { e.printStackTrace(); } }}3. Apache Commons CSV — 灵活性与性能
Apache Commons CSV是另一个强大的库,支持多种格式(CSV、TSV、Excel)。
安装(Maven):
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-csv</artifactId> <ver