首页 > 解决方案 > 用于读取 csv 并指定超过 1 个字符(字符串)“|%|”的自定义分隔符的 Java 库

问题描述

需要读取带有自定义字符串分隔符的 csv 文件,例如“|%|”。目前我正在使用 CSV 公共库,但它只允许按字符而不是字符串拆分。我更喜欢通过坚持使用 CSV 公共库进行拆分,但也对其他库开放。

标签: javacsvfile-io

解决方案


如果 CSV 文件使用不同的分隔符,而不是默认分隔符(即逗号),则可以轻松配置 CSVFormat 来处理它。假设文件用连字符分隔:

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import java.io.IOException;
import java.io.Reader;
import java.nio.file.Files;
import java.nio.file.Paths;

public class CSVReaderWithDifferentDelimiter {
    public static void main(String[] args) throws IOException {
        String csvFilePath = "../csvFileWithDiffDelimiter.csv";

        Reader reader = Files.newBufferedReader(Paths.get(csvFilePath));
        CSVFormat csvFormat = CSVFormat.newFormat('-')
                .withFirstRecordAsHeader();

        CSVParser csvParser = csvFormat.parse(reader);
        csvParser.getRecords()
                .forEach(csvRecord -> System.out.println(csvRecord.toMap()));
    }
}

请注意,我们不再使用 DEFAULT CSVFormat,而是从头开始构建。我们将分隔符作为新的格式方法参数传递。其余配置,如记录分隔符、转义序列等将默认设置。


推荐阅读