java如何读取csv
读取CSV文件的方法
在Java中读取CSV文件可以通过多种方式实现,以下是几种常见的方法:
使用第三方库(如OpenCSV)
OpenCSV是一个流行的库,专门用于处理CSV文件。添加依赖后,可以轻松读取CSV数据。

<!-- Maven依赖 -->
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.7.1</version>
</dependency>
import com.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadCSV {
public static void main(String[] args) {
try (CSVReader reader = new CSVReader(new FileReader("data.csv"))) {
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
for (String cell : nextLine) {
System.out.print(cell + " ");
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用Apache Commons CSV
Apache Commons CSV是另一个强大的库,支持多种CSV格式。

<!-- Maven依赖 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.9.0</version>
</dependency>
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class ReadCSV {
public static void main(String[] args) {
try (Reader reader = new FileReader("data.csv");
CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT)) {
for (CSVRecord record : csvParser) {
String column1 = record.get(0);
String column2 = record.get(1);
System.out.println(column1 + ", " + column2);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用Java原生方法(BufferedReader)
如果不希望引入第三方库,可以使用Java原生的BufferedReader逐行读取并手动解析。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadCSV {
public static void main(String[] args) {
String line;
try (BufferedReader br = new BufferedReader(new FileReader("data.csv"))) {
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
for (String value : values) {
System.out.print(value + " ");
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
处理复杂CSV(含引号或转义字符)
如果CSV包含引号或转义字符,手动解析可能会出错。建议使用第三方库(如OpenCSV或Apache Commons CSV)以正确处理这些情况。
// 使用OpenCSV处理带引号的CSV
CSVReader reader = new CSVReaderBuilder(new FileReader("data.csv"))
.withSkipLines(1) // 跳过标题行
.build();
注意事项
- 文件路径需正确,相对路径以项目根目录为基准。
- 处理大型文件时,注意内存占用问题。
- 第三方库通常提供更好的性能和功能(如自动处理引号、换行符等)。






