У меня есть список объектов, скажем, список продуктов, которые я получаю из своего БД. Я могу записать этот список в файл CSV, используя средство записи openCSV StatefulBeanToCSV для записей 0,5 млн. Для записи данных в файл CSV требуется менее 10 секунд. Но проблема в том, что StatefulBeanToCSV записывает все эти записи 0,5 млн. в один файл CSV, размер которого становится больше .. поэтому мне нужен способ ограничить файл CSV до 20 МБ. Если размер CSV-файла достигает 20 МБ, мне нужно, чтобы 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());
}
}