Java读取CSV推荐用OpenCSV或Apache Commons CSV库,因其能正确处理含逗号、换行符和引号的字段;标准库无内置解析器,BufferedReader仅适用于极简格式,易出错。

Java 中读取 CSV 文件最常用且推荐的方式是使用第三方库,比如 OpenCSV 或 Apache Commons CSV。Java 标准库没有内置的 CSV 解析器,直接用 BufferedReader 逐行读取虽可行,但无法正确处理含逗号、换行符或引号的字段(比如 "Smith, John"),容易出错。
用 OpenCSV 读取 CSV(推荐)
OpenCSV 简单易用,支持带标题行、自定义分隔符、自动解析引号包裹字段等特性。
- 添加 Maven 依赖:
- 读取为字符串数组(无标题):
CsvReader reader = new CsvReader("data.csv");
reader.readHeaders(); // 可选:跳过首行
while (reader.readRecord()) {
String[] values = reader.getValues();
System.out.println(Arrays.toString(values));
}
reader.close();
- 读取为 JavaBean(需字段名匹配列头):
CsvToBean<user> csvToBean = new CsvToBeanBuilder<user>(new FileReader("users.csv"))
.withType(User.class)
.withIgnoreLeadingWhiteSpace(true)
.build();
List<user> users = csvToBean.parse();
</user></user></user>
用 Apache Commons CSV(轻量、无依赖)
更现代、线程安全,API 清晰,适合新项目。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- Maven 依赖:
- 带标题行读取示例:
try (Reader reader = Files.newBufferedReader(Paths.get("data.csv"));
CSVParser csvParser = CSVFormat.DEFAULT.withFirstRecordAsHeader().parse(reader)) {
for (CSVRecord record : csvParser) {
String name = record.get("name");
int age = Integer.parseInt(record.get("age"));
System.out.printf("Name: %s, Age: %d%n", name, age);
}
}
不用第三方库?谨慎使用 BufferedReader
仅适用于格式极其简单、无特殊字符的 CSV(如纯数字/字母,用逗号分隔,无空格和引号)。
- 基本做法:
try (BufferedReader br = Files.newBufferedReader(Paths.get("data.csv"))) {
String line;
while ((line = br.readLine()) != null) {
String[] fields = line.split(",", -1); // -1 保留末尾空字段
System.out.println(Arrays.toString(fields));
}
}
- 缺点明显:遇到
"a,b",c,"d,e,f"这类内容会错误切分为 5 段而非 3 段;不处理换行符嵌入在引号内的情况。
小提示:编码与异常处理
中文 CSV 常见乱码,务必指定编码(如 UTF-8):
Files.newBufferedReader(Paths.get("data.csv"), StandardCharsets.UTF_8)
- 始终用 try-with-resources 确保流关闭
- 对数值、日期等字段做空值和格式校验,避免
NumberFormatException - 大文件建议用流式解析(如 Commons CSV 的迭代器模式),避免 OOM
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










