【发布时间】:2019-06-05 07:41:15
【问题描述】:
我想使用 Java Stream API 将文本行列表写入 csv。但是,我可以构建并过滤掉需要写入写入器流的行。但是我使用 CSVWriter 写行的部分并不是很流式的。我应该如何重写代码?
import au.com.bytecode.opencsv.CSVWriter;
public static void export(List<List<String>> data, Writer w) throws Exception{
CSVWriter writer = new CSVWriter(w);
Stream.of(data)
.filter(CollectionUtils::isNotEmpty)
.forEach(row -> {
writer.writeNext(row.toArray(new String[row.size()]));
});
w.flush();
}
【问题讨论】:
-
你的意思是
Stream.of(data)?那是Stream<List<List<String>>。 -
另外,这里不要关闭
w,因为这里没有打开。关闭事物应该(几乎)始终是打开它们的代码的责任。也许您打算使用writer.flush()之类的东西?
标签: java java-stream export-to-csv