📜  使用 OpenCSV 将Java Bean 映射到 CSV(1)

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

使用 OpenCSV 将 Java Bean 映射到 CSV

OpenCSV 是一个轻量级的 Java 库,用于操作 CSV 文件。它提供了一个简单易用的方式将 Java 对象映射到 CSV 表格中,或将 CSV 表格映射到 Java 对象中。

本文将介绍如何使用 OpenCSV 将 Java Bean 映射到 CSV。

1. 添加依赖

在开始之前,需要在项目中添加 OpenCSV 的依赖。

Maven 依赖:

<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>5.3</version>
</dependency>

Gradle 依赖:

implementation 'com.opencsv:opencsv:5.3'
2. 创建 Java Bean

首先,我们需要创建一个 Java Bean,用于和 CSV 表格进行映射。假设我们要映射的 CSV 表格长这个样子:

Name,Age,City
John,25,New York
Jane,30,San Francisco

那么对应的 Java Bean 可以这样定义:

public class Person {
    private String name;
    private int age;
    private String city;

    public Person() {}

    public Person(String name, int age, String city) {
        this.name = name;
        this.age = age;
        this.city = city;
    }

    // getter 和 setter 方法省略
}
3. 写入 CSV 文件

接下来,我们要把这个 Java Bean 中的数据写入到 CSV 文件中。代码如下:

import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;

public class WriteCsvExample {
    public static void main(String[] args) throws IOException {
        CSVWriter writer = new CSVWriter(new FileWriter("output.csv"));

        // 写入表头
        writer.writeNext(new String[] {"Name", "Age", "City"});

        // 写入数据行
        writer.writeNext(new String[] {"John", "25", "New York"});
        writer.writeNext(new String[] {"Jane", "30", "San Francisco"});

        writer.close();
    }
}

这里使用了 CSVWriter 类来操作 CSV 文件。首先,我们需要创建一个 CSVWriter 对象,指定输出文件的路径;然后,我们可以使用 writeNext() 方法将表头和数据行写入到文件中。

4. 读取 CSV 文件

读取 CSV 文件同样简单,代码如下:

import com.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;

public class ReadCsvExample {
    public static void main(String[] args) throws IOException {
        CSVReader reader = new CSVReader(new FileReader("input.csv"));

        // 读取表头
        String[] header = reader.readNext();

        // 读取数据行
        String[] line;
        while ((line = reader.readNext()) != null) {
            Person person = new Person(line[0], Integer.parseInt(line[1]), line[2]);
            System.out.println(person.toString());
        }

        reader.close();
    }
}

这里使用了 CSVReader 类来读取 CSV 文件。我们需要通过 readNext() 方法来逐行读取文件内容,每行的数据保存在一个 String 数组中。和写入 CSV 文件一样,读取也需要一个循环,将每行数据转换成对应的 Java 对象即可。

5. 总结

通过本文的介绍,我们了解了如何使用 OpenCSV 将 Java Bean 映射到 CSV。相比于使用原始的流操作,OpenCSV 提供了更加便捷的方式来读写 CSV 文件,可以使我们的代码更加简洁明了。