我有一大堆需要写入CSV文件的bean . 我正在尝试使用OpenCSV,但我在网上看到的所有示例都要求我将我拥有的bean(POJO)转换为字符串数组 . 我不想这样做,因为这意味着我将不得不通过百万个bean并将每个bean转换为String [],这将是一个非常耗费内存的过程 .
这是我现在所做的一段代码:
private static void writeRowsToCsv(Path filePath, List<MyBean> rows)
throws IOException {
StringWriter writer = new StringWriter();
CSVWriter csvWriter = new CSVWriter(writer, '#', '\'');
ColumnPositionMappingStrategy mappingStrategy =
new ColumnPositionMappingStrategy();
mappingStrategy.setType(MyBean.class);
List<String[]> rowsInStringArray = convertBeanToStringArray(rows)
csvWriter.writeAll(rowsInStringArray);
}
有没有办法可以避免转换为 String[]
并使用我必须写入CSV文件的bean列表?
2 回答
你在一个循环中调用
writeNext()
,一次转换一个bean . 根本不是内存昂贵的 .Jobin,严重的是,如果您使用的是OpenCSV,请使用
BeanToCsv
或更新的StatefulBeanToCsv
. 它会拯救你的理智 .