在 Java 中导入 CSV 文件有多种方式,下面将介绍三种常用的方式,包括使用纯 Java、Apache Commons CSV 库以及 OpenCSV 库的方法。这些方法适用于不同的需求和场景。
这是一种基本的方式,不需要额外的第三方库,但需要自己编写 CSV 解析代码。
步骤流程:
BufferedReader
对象用于读取文件内容。BufferedReader
的 readLine()
方法。String.split()
方法或者 StringTokenizer
类。List
或 Array
。示例代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class CSVImporter {
public static void main(String[] args) {
String csvFile = "data.csv"; // CSV文件路径
String line;
String cvsSplitBy = ","; // CSV分隔符
List<String[]> dataList = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
while ((line = br.readLine()) != null) {
// 使用逗号分割行数据
String[] data = line.split(cvsSplitBy);
dataList.add(data);
}
} catch (IOException e) {
e.printStackTrace();
}
// 现在 dataList 包含了CSV文件中的数据
for (String[] row : dataList) {
for (String cell : row) {
System.out.print(cell + "\t");
}
System.out.println();
}
}
}
Apache Commons CSV 是一个流行的 CSV 处理库,它提供了更强大的功能,可以轻松处理各种 CSV 格式。
Maven 依赖坐标:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.8</version> <!-- 使用最新版本 -->
</dependency>
Gradle 依赖坐标:
implementation group: 'org.apache.commons', name: 'commons-csv', version: '1.8'
步骤流程:
CSVParser
对象,将 CSV 文件作为输入流传递给它。CSVParser
逐行解析 CSV 数据,每一行都被表示为 CSVRecord
对象。CSVRecord
对象中获取字段数据。示例代码:
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 CSVImporterApacheCommons {
public static void main(String[] args) {
String csvFile = "data.csv"; // CSV文件路径
try (Reader reader = new FileReader(csvFile);
CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT)) {
for (CSVRecord csvRecord : csvParser) {
// 获取每一行的字段数据
String column1 = csvRecord.get(0);
String column2 = csvRecord.get(1);
// 进行数据处理
System.out.println("Column 1: " + column1 + ", Column 2: " + column2);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
OpenCSV 是另一个流行的 CSV 处理库,它提供了简单而强大的 CSV 导入和导出功能。
Maven 依赖坐标:
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.5</version> <!-- 使用最新版本 -->
</dependency>
Gradle 依赖坐标:
implementation group: 'com.opencsv', name: 'opencsv', version: '5.5'
步骤流程:
CSVReader
对象,将 CSV 文件作为输入流传递给它。CSVReader
逐行解析 CSV 数据。示例代码:
import com.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;
public class CSVImporterOpenCSV {
public static void main(String[] args) {
String csvFile = "data.csv"; // CSV文件路径
try (CSVReader csvReader = new CSVReader(new FileReader(csvFile))) {
String[] nextLine;
while ((nextLine = csvReader.readNext()) != null) {
// 获取每一行的字段数据
String column1 = nextLine[0];
String column2 = nextLine[1];
// 进行数据处理
System.out.println("Column 1: " + column1 + ", Column 2: " + column2);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上是三种常见的 CSV 导入方式,你可以根据自己的需求选择其中一种来处理 CSV 文件。使用第三方库通常更加方便和健壮,特别是当 CSV 文件包含复杂的结构或特殊字符时。