You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java在CSV文件中插入单个空白行?

解决Java OpenCSV插入单个空白行的问题

嘿,我懂你碰到的这个小坑了——用OpenCSV的CSVPrinter时,直接调用printRecord("\n")会多出一行空白,对吧?让我给你拆解下原因,再告诉你怎么搞定。

问题根源

你设置的CSVFormat用了"\n"作为记录分隔符,而CSVPrinter的printRecord()方法本身就会在每条记录的末尾自动添加这个分隔符。当你传入"\n"作为记录内容时,相当于先输出了一个换行,然后方法又自动加了一个换行,最终就变成了"\n\n",也就是两个空白行。

正确的解决方案

有两种简单的方式可以实现只插入一个空白行:

方法1:使用println()直接输出换行

CSVPrinter提供了println()方法,它会直接输出你设置的记录分隔符(这里就是"\n"),不会额外添加内容。这是最直接的方式:

CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator("\n").withEscape('\\');

// 推荐用try-with-resources自动关闭资源,避免泄漏
try (FileWriter fileWriter = new FileWriter(csvFile);
     CSVPrinter csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat)) {
    csvFilePrinter.printRecord("data1");
    csvFilePrinter.println(); // 这里替换掉printRecord("\n")
    csvFilePrinter.printRecord("data2");
} catch (IOException e) {
    e.printStackTrace();
}

方法2:输出空记录(可选)

如果你更习惯用printRecord(),可以调用无参的printRecord()方法,它会输出一个空记录,再加上记录分隔符,效果也是单个空白行:

// 同样在try-with-resources块中
csvFilePrinter.printRecord("data1");
csvFilePrinter.printRecord(); // 无参的printRecord()
csvFilePrinter.printRecord("data2");

验证结果

用上面的代码生成CSV后,在Notepad++里打开就能看到:

data1

data2

刚好是data1、一个空白行、data2,完美符合你的需求。

内容的提问来源于stack exchange,提问作者Radhika Kulkarni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:37:50