【发布时间】:2020-04-18 05:19:09
【问题描述】:
我有一个对象列表,比如说我从数据库中获得的产品列表。我能够使用 openCSV StatefulBeanToCSV 写入器将这些列表写入 CSV 文件以获取 0.5M 记录,将数据写入 CSV 文件需要不到 10 秒的时间。但问题是 StatefulBeanToCSV 将所有这些 0.5M 记录写入单个 CSV 文件,其大小变大了..所以我需要一种将 CSV 文件限制为 20Mb 的方法。如果 CSV 文件的大小达到 20mb,我需要 StatefulBeanToCSV 来写入新的 CSV 文件。非常感谢任何帮助。
public static void buildProductCsv(final List<Product> product,
final String filePath) {
try {
Writer writer = new FileWriter(filePath);
// mapping of columns with their positions
ColumnPositionMappingStrategy<Product> mappingStrategy = new ColumnPositionMappingStrategy<Product>();
// Set mappingStrategy type to Product Type
mappingStrategy.setType(Product.class);
// Fields in Product Bean
String[] columns = new String[] { "productCode", "MFD", "EXD" };
// Setting the colums for mappingStrategy
mappingStrategy.setColumnMapping(columns);
StatefulBeanToCsvBuilder<Product> builder = new StatefulBeanToCsvBuilder<Product>(writer);
StatefulBeanToCsv<Product> beanWriter = builder.withMappingStrategy(mappingStrategy).build();
// Writing data to csv file
beanWriter.write(product);
writer.close();
log.info("Your csv file has been generated!");
} catch (Exception ex) {
log.warning("Exception: " + ex.getMessage());
}
}
【问题讨论】:
-
也许这可以帮助link
-
这能回答你的问题吗? Limit file size while writing in java
标签: java spring-boot csv opencsv supercsv