📜  如何使用Java的记事本以 CSV 格式读取写入对象的数据?(1)

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

使用Java的记事本以CSV格式读取写入对象的数据

CSV格式是一种以逗号作为分隔符的文件格式,通常用于存储表格数据。Java可以使用第三方库来读取和写入CSV文件,其中最流行的是Apache Commons CSV。

读取CSV文件

使用Apache Commons CSV库,可以按照以下步骤从CSV文件中读取数据:

  1. 引入Apache Commons CSV库。

在Maven项目中,可以使用以下依赖项引入库:

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-csv</artifactId>
  <version>1.8</version>
</dependency>

对于Gradle项目,请使用以下依赖项:

implementation 'org.apache.commons:commons-csv:1.8'
  1. 创建CSVParser对象。
Reader reader = new FileReader("path/to/csv/file.csv");
CSVParser parser = new CSVParserBuilder()
        .withSeparator(',')
        .withIgnoreQuotations(false)
        .build();
  1. 使用CSVParser对象从文件中读取记录。
CSVReader csvReader = new CSVReaderBuilder(reader)
        .withCSVParser(parser)
        .build();
List<String[]> records = csvReader.readAll();
  1. 将记录转换为Java对象。

假设有以下CSV文件:

name,age,email
John Doe,30,john@example.com
Jane Smith,25,jane@example.com

可以为Java中的Person类编写一个解析方法:

public static List<Person> parseCsv(String csvFile) throws IOException {
    Reader reader = new FileReader(csvFile);
    CSVParser parser = new CSVParserBuilder()
            .withSeparator(',')
            .withIgnoreQuotations(false)
            .build();
    CSVReader csvReader = new CSVReaderBuilder(reader)
            .withCSVParser(parser)
            .build();

    List<Person> persons = new ArrayList<>();
    String[] record;
    while ((record = csvReader.readNext()) != null) {
        String name = record[0];
        int age = Integer.parseInt(record[1]);
        String email = record[2];
        persons.add(new Person(name, age, email));
    }
    return persons;
}
写入CSV文件

使用Apache Commons CSV库,可以按照以下步骤将数据写入CSV文件:

  1. 引入Apache Commons CSV库。

在Maven项目中,可以使用以下依赖项引入库:

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-csv</artifactId>
  <version>1.8</version>
</dependency>

对于Gradle项目,请使用以下依赖项:

implementation 'org.apache.commons:commons-csv:1.8'
  1. 创建CSVPrinter对象。
Writer writer = new FileWriter("path/to/csv/file.csv");
CSVPrinter printer = new CSVPrinter(
        writer,
        CSVFormat.DEFAULT.withHeader("name", "age", "email"));
  1. 将对象转换为CSV记录并写入文件。
List<Person> persons = new ArrayList<>();
persons.add(new Person("John Doe", 30, "john@example.com"));
persons.add(new Person("Jane Smith", 25, "jane@example.com"));

for (Person person : persons) {
    printer.printRecord(person.getName(), person.getAge(), person.getEmail());
}

printer.close();
总结

使用Apache Commons CSV库可以方便地读取和写入CSV格式的数据。在读取CSV文件时,可以使用CSVParser对象将文件解析为记录列表,并将这些记录转换为Java对象。在将数据写入CSV文件时,可以使用CSVPrinter对象将Java对象转换为CSV记录并将其写入文件。