📅  最后修改于: 2023-12-03 15:23:09.801000             🧑  作者: Mango
CSV(Comma Separated Values)是一种常见的文件格式,它使用逗号作为字段之间的分隔符。在 Java 中,我们可以使用许多不同的方式来读取 CSV 文件,包括使用第三方库和手动解析。接下来,我们将介绍其中的一些方法。
手动解析 CSV 文件可能是最基本的方法。我们可以使用 Java 的 BufferedReader 和 StringTokenizer 类来逐行读取文件并分离字段。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class CsvReader {
public static void main(String[] args) {
String csvFile = "path/to/csv/file.csv";
String line = "";
String cvsSplitBy = ",";
List<String[]> dataList = new ArrayList<String[]>();
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
while ((line = br.readLine()) != null) {
StringTokenizer st = new StringTokenizer(line, cvsSplitBy);
List<String> tempList = new ArrayList<String>();
while (st.hasMoreTokens()) {
tempList.add(st.nextToken());
}
String[] data = new String[tempList.size()];
data = tempList.toArray(data);
dataList.add(data);
}
} catch (IOException e) {
e.printStackTrace();
}
// Do something with dataList
}
}
OpenCSV 是一个开源的 Java CSV 工具库,可以实现 CSV 文件的读取和写入。
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.4</version>
</dependency>
import com.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
public class CsvReader {
public static void main(String[] args) {
String csvFile = "path/to/csv/file.csv";
try (CSVReader reader = new CSVReader(new FileReader(csvFile))) {
List<String[]> dataList = reader.readAll();
// Do something with dataList
} catch (IOException e) {
e.printStackTrace();
}
}
}
Apache Commons CSV 是另一个流行的 Java CSV 工具库,它提供了易于使用的 API 来读取和写入 CSV 文件。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.8</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.util.List;
public class CsvReader {
public static void main(String[] args) {
String csvFile = "path/to/csv/file.csv";
try (CSVParser parser = CSVParser.parse(new FileReader(csvFile), CSVFormat.DEFAULT)) {
List<CSVRecord> records = parser.getRecords();
// Do something with records
} catch (IOException e) {
e.printStackTrace();
}
}
}
Java 中读取 CSV 文件可以使用多种不同的方法,包括手动解析、使用 OpenCSV 和 Apache Commons CSV。选择哪种方法取决于您的需求和个人偏好。