繁体   English   中英

如何写清单 <String[]> 在带有simpleflatmapper的CSV文件中?

[英]How to write a List<String[]> in a csv file with 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文件的方法。 我很确定有可能,但没有足够的适当文档 简而言之,我需要帮助!

从官方文档的首页:

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

与库的作者讨论之后,看来这种情况的理想代码是使用CsvCellWriter (当我们事先不知道要写入的列数时,实际上如果我们没有标题的话)而不是CsvWriter是因为CsvWriter需要事先知道要写入的csv文件的结构; 是一个List<String[]>

Maven依赖项:

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

import org.simpleflatmapper.csv.*;
import org.simpleflatmapper.csv.impl.writer.CsvCellWriter;
..........
FileWriter writer = new FileWriter("new_file.csv");
CsvCellWriter cellWriter = CsvCellWriter.DEFAULT_WRITER.separator(',').quote('"');
lines.forEach ( strs ->  {
try {
    if (strs.length > 0) {
        cellWriter.writeValue(strs[0], writer);
        for (int i = 1; i < strs.length; i++) {
           cellWriter.nextCell(writer);
           cellWriter.writeValue(strs[i], writer);
        }
       }
    cellWriter.endOfRow(writer);
} catch (IOException e) {e.printStackTrace();}
} );
writer.close();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM