如何将ArrayList写入csv文件
发布时间:2020-05-28 13:50:15 所属栏目:Java 来源:互联网
导读:我有一个ArrayList Metadata并且我想知道是否存在用于处理CSV文件的 Java API,其具有接受ArrayList的write方法.作为类似于.Net中的LinqToCsv的参数.据我所知,OpenCSV可用,但CsvWriter类不接受集合. 我的元数据类是 public class Metadata{ private String pag
|
我有一个ArrayList< Metadata>并且我想知道是否存在用于处理CSV文件的
Java API,其具有接受ArrayList<>的write方法.作为类似于.Net中的LinqToCsv的参数.据我所知,OpenCSV可用,但CsvWriter类不接受集合.
public class Metadata{
private String page;
private String document;
private String loan;
private String type;
}
ArrayList<Metadata> record = new ArrayList<Metadata>(); 一旦我填充了记录,我想将每一行写入csv文件. 解决方法肯定会有一堆API会为你做这件事,但为什么不自己做这么简单的案例呢?它将为您节省一个依赖项,这对任何规模的项目都是一件好事.在Metadata中创建一个toCsvRow()方法,该方法连接由逗号分隔的字符串. public String toCsvRow() {
return Stream.of(page,document,loan,type)
.map(value -> value.replaceAll(""",""""))
.map(value -> Stream.of(""",",").anyMatch(value::contains) ? """ + value + """ : value)
.collect(Collectors.joining(","));
}
为每个由新行分隔的Metadata对象收集此方法的结果. String recordAsCsv = record.stream()
.map(Metadata::toCsvRow)
.collect(Collectors.joining(System.getProperty("line.separator")));
编辑 public String toCsvRow() {
String csvRow = "";
for (String value : Arrays.asList(page,type)) {
String processed = value;
if (value.contains(""") || value.contains(",")) {
processed = """ + value.replaceAll(""","""") + """;
}
csvRow += "," + processed;
}
return csvRow.substring(1);
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
