📜  在 Java 中读取 CSV 文件 (1)

📅  最后修改于: 2023-12-03 15:23:09.801000             🧑  作者: Mango

在 Java 中读取 CSV 文件

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

OpenCSV 是一个开源的 Java CSV 工具库,可以实现 CSV 文件的读取和写入。

添加依赖
<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>5.4</version>
</dependency>
读取 CSV 文件
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

Apache Commons CSV 是另一个流行的 Java CSV 工具库,它提供了易于使用的 API 来读取和写入 CSV 文件。

添加依赖
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-csv</artifactId>
    <version>1.8</version>
</dependency>
读取 CSV 文件
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。选择哪种方法取决于您的需求和个人偏好。