如何将ArrayList写入csv文件
发布时间:2020-12-15 00:51:31 所属栏目:Java 来源:网络整理
导读:我有一个ArrayList Metadata并且我想知道是否存在用于处理CSV文件的 Java API,其具有接受ArrayList的write方法.作为类似于.Net中的LinqToCsv的参数.据我所知,OpenCSV可用,但CsvWriter类不接受集合. 我的元数据类是 public class Metadata{ private String pa
我有一个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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |