![](/img/trans.png)
[英]How to solve the runtime exception while converting csv to bean using opencsv for blank csv file
[英]How to write bean to CSV using OpenCSV without converting to String[]?
我有大量的Bean,需要將其寫入CSV文件。 我正在嘗試使用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列表?
Jobin,如果您使用的是OpenCSV,請認真使用BeanToCsv
或更新的StatefulBeanToCsv
。 它將節省您的理智。
private static void writeRowsToCsv(Path filePath, List<MyBean> rows)
throws IOException {
StringWriter writer = new StringWriter();
ColumnPositionMappingStrategy mappingStrategy =
new ColumnPositionMappingStrategy();
mappingStrategy.setType(MyBean.class);
StatefulBeanToCsvBuilder<MyBean> builder = new StatefulBeanToCsvBuilder(writer);
StatefulBeanToCsv beanWriter = builder
.withMappingStrategy(mappingStrategy)
.withSeparator('#')
.withQuotechar('\'')
.build();
beanWriter.write(rows);
}
您可以循環調用writeNext()
,一次轉換一個bean。 完全不消耗內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.