java8实现:利用CsvSchema写一个共通方法,参数为List<ADto>、ADto.class、filePath,将list出力到csv文件中。要求大数据量的场合也适用
时间: 2023-12-14 12:39:29 浏览: 34
下面是一个实现示例:
```java
import com.fasterxml.jackson.databind.MappingIterator;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
import java.io.File;
import java.io.IOException;
import java.util.List;
public class CsvUtil {
/**
* 将list输出到csv文件
*
* @param list 待输出的list
* @param clazz list中元素的类型
* @param filePath 输出文件路径
* @throws IOException
*/
public static <T> void writeListToCsv(List<T> list, Class<T> clazz, String filePath) throws IOException {
CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(clazz).withHeader();
ObjectWriter writer = mapper.writerFor(clazz).with(schema);
File file = new File(filePath);
writer.writeValues(file).writeAll(list);
}
/**
* 从csv文件中读取数据到list
*
* @param filePath csv文件路径
* @param clazz 输出的list中元素的类型
* @return
* @throws IOException
*/
public static <T> List<T> readListFromCsv(String filePath, Class<T> clazz) throws IOException {
CsvMapper mapper = new CsvMapper();
CsvSchema schema = mapper.schemaFor(clazz).withHeader().withColumnReordering(true);
ObjectReader reader = mapper.readerFor(clazz).with(schema);
File file = new File(filePath);
MappingIterator<T> it = reader.readValues(file);
return it.readAll();
}
}
```
这个类中包含了两个共通方法:
1. `writeListToCsv`:将一个 `List` 写入到指定的csv文件中。使用了Jackson的 `CsvMapper` 和 `CsvSchema`。
2. `readListFromCsv`:从指定的csv文件中读取数据到一个 `List` 中。同样使用了Jackson的 `CsvMapper` 和 `CsvSchema`。
这些方法可以处理大数据量的场合,因为它们使用了Jackson的流式读写方式,可以避免加载整个文件到内存中。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)