Java源码示例:com.univocity.parsers.common.processor.BeanWriterProcessor

示例1
/**
 * 将数据库的数据导出为CSV
 *
 * @param file        导出的文件
 * @param sourceClass 读取数据库数据时对应的Bean
 * @param targetClass 写入文件时对应的Bean
 * @param sourceList  数据库查到的数据
 */
@SneakyThrows(IOException.class)
public static <F, T> void toFile(Path file, Class<F> sourceClass, Class<T> targetClass, List<F> sourceList) {
    if (Files.notExists(file)) {
        Files.createFile(file);
    }
    Copier<F, T> copier = Copiers.create(sourceClass, targetClass);
    List<T> data = sourceList.parallelStream().map(copier::copy).collect(Collectors.toList());
    //List转换CSV处理器
    BeanWriterProcessor<T> writerProcessor = new BeanWriterProcessor<>(targetClass);
    writerProcessor.setStrictHeaderValidationEnabled(true);
    //CSV写入设置
    CsvWriterSettings settings = Csv.writeExcel();
    //设置处理器
    settings.setRowWriterProcessor(writerProcessor);
    try (OutputStream os = Files.newOutputStream(file, CREATE, TRUNCATE_EXISTING, WRITE);
         OutputStreamWriter osw = new OutputStreamWriter(os)) {
        CsvWriter writer = new CsvWriter(osw, settings);
        writer.processRecordsAndClose(data);
    }
}
 
示例2
public boolean writeBeanToFixedWidthFile(List<Product> products, String outputPath) {
    try (Writer outputWriter = new OutputStreamWriter(new FileOutputStream(new File(outputPath)), "UTF-8")) {
        BeanWriterProcessor<Product> rowProcessor = new BeanWriterProcessor<Product>(Product.class);
        FixedWidthFields fieldLengths = new FixedWidthFields(8, 30, 10);
        FixedWidthWriterSettings settings = new FixedWidthWriterSettings(fieldLengths);
        settings.setHeaders("product_no", "description", "unit_price");
        settings.setRowWriterProcessor(rowProcessor);
        FixedWidthWriter writer = new FixedWidthWriter(outputWriter, settings);
        writer.writeHeaders();
        for (Product product : products) {
            writer.processRecord(product);
        }
        writer.close();
        return true;
    } catch (IOException e) {
        logger.error(e.getMessage());
        return false;
    }
}
 
示例3
private static <T> void writeRecords(Writer writer, List<T> beans, Class<T> aClass) {
    FixedWidthWriterSettings settings = new FixedWidthWriterSettings();
    settings.setWriteLineSeparatorAfterRecord(true);
    BeanWriterProcessor<T> processor = new BeanWriterProcessor<>(aClass);
    settings.setRowWriterProcessor(processor);
    new FixedWidthWriter(writer, settings).processRecords(beans);
}