如何使用simpleflatmapper在csv文件中编写List <string []>?

时间:2018-07-12 09:58:19

标签: java csv simpleflatmapper

我必须使用库 simpleflatmapper ,并且我无法找到这样一种方法来简单地在 csv文件中写入List<String[]> 。我可以解析(没有空行)并存储在List<String[]>中:

FileReader file = new FileReader("file.csv");
Iterator<String[]> parser = CsvParser.separator(',').quote('\"').iterator(file);
List<String[]> lines = new ArrayList<String[]>();
String[] line;
while(parser.hasNext()) {
    line = parser.next();
    if (line[0].length() != 0) {
        lines.add(line);
    }
}
FileWriter fw = new FileWriter("copy_file.csv");
........

但是我找不到用List<String[]> lines的数据编写新的csv文件的方法。我很确定有可能,但是没有足够的适当文档。简而言之,我需要帮助!

2 个答案:

答案 0 :(得分:1)

在官方文档的首页上:

CsvWriter.CsvWriterDSL<String[]> dsl = CsvWriter.from(String[].class)
                                                .columns("a[0]", "a[1]", "a[2]")
                                                .skipHeaders();

try (FileWriter fileWriter = new FileWriter(file)) {
    CsvWriter<String[]> writer = dsl.to(fileWriter);
    lines.forEach(CheckedConsumer.toConsumer(writer::append));
}

我假设每个String[]至少具有三个元素-columns("a[0]", "a[1]", "a[2]")。否则,将发生ArrayIndexOutOfBoundsException

答案 1 :(得分:1)

与图书馆作者进行了讨论之后,看来这种情况的理想代码是使用ModelViewSet(当我们事先不知道要写的列数时) ,实际上,如果我们没有标头)而不是CsvCellWriter,因为CsvWriter需要事先知道要写入的csv文件的结构; CsvWriter

Maven依赖项:

List<String[]>

<groupId>org.simpleflatmapper</groupId>
<artifactId>sfm-csv</artifactId>
<version>3.18.3</version>

此代码允许相同地写入列表数据,因为我们可以选择分隔符,引号和其他选项。 此外,该库似乎足够方便快捷地解析csv文件。