java - apache-commons-csv println 方法不在输出中打印换行符
问题描述
我是 apache-commons-csv 1.6 的新手
我有一个基本要求,即在新行中打印每条记录的 csv 文件。我正在尝试使用 CSVPrinter 的 println 方法。出于某种奇怪的原因,输出文件没有任何换行符。所有内容都打印在一行中。
我试图在 Notepad++ 中打开输出并显示不可打印的字符。记录之间没有字符。任何帮助将不胜感激。谢谢。
CSVPrinter csvPrinter = null;
if(delimiter != null && delimiter.length() > 0) {
csvPrinter = new CSVPrinter(new FileWriter(outputFile), CSVFormat.newFormat(delimiter.charAt(0)).withHeader(header));
}else {
csvPrinter = new CSVPrinter(new FileWriter(outputFile), CSVFormat.DEFAULT.withHeader(header));
}
for(Map<String,String> record : inputList) {
List<String> valueList = new ArrayList<String>();
for(String key : record.keySet()) {
valueList.add(record.get(key));
}
System.out.println(valueList);
csvPrinter.printRecord(valueList);
csvPrinter.println();
}
csvPrinter.close();
预期结果:
id|类型|值|键
4|excel|0|excel.sheet.no
5|excel|dd/MM/yyyy|excel.date.format
6|excel|0|excel.baserate.rownum
实际结果:id|type|value|key4|excel|0|excel.sheet.no5|excel|dd/MM/yyyy|excel.date.format6|excel|0|excel.baserate.rownum
解决方案
如果您不想覆盖所有分隔符,请不要使用newFormat方法
如果您想从头开始创建 CSVFormat,请使用此方法。除定界符外的所有字段都将使用 null/false 进行初始化。
如果要为每条记录添加新行分隔符,请添加withRecordSeparator
CSVFormat.newFormat(delimiter.charAt(0)).withHeader(header)).
withRecordSeparator(System.getProperty("line.separator"));
返回一个新的 CSVFormat,其格式的记录分隔符设置为指定字符。
注意:此设置仅在打印时使用,不影响解析。解析目前仅适用于带有 '\n'、'\r' 和 "\r\n" 的输入
推荐阅读
- javascript - Jquery - 仅当 ajax 重新加载时值更改时才为 DIV 设置动画
- python - Tkinter (python 2.7) | 确定它的 tk 实例还是顶级实例
- numpy - 将numpy数组转换为沿不同深度维度堆叠的简单方法
- python-3.x - 如何在 Python 中授予对 AWS Lambda 的访问权限以读取外部网页?
- python - 如何在 Keras 损失函数中使用预训练的 TensorFlow 网络
- ios - 为什么在类似的代码片段中初始化的顺序不同。斯威夫特 4
- node.js - 每次收到回滚操作时如何安装 Node.js?
- ruby-on-rails - 如何为终端使用一个命令来同时运行 rails 和 db
- android-studio - 谷歌播放服务 API 的 Android Studio 依赖项错误
- java - 弹簧靴。按请求创建和绑定表