java8实现:将List<ADto>出力成csv文件。参数为List<ADto>、ADto.class、filePath
时间: 2024-05-04 21:22:00 浏览: 22
可以使用Java 8的Stream API和CSVWriter库来实现将List<ADto>输出成CSV文件,具体实现如下:
```java
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.List;
import java.util.stream.Collectors;
import com.opencsv.CSVWriter;
public class CsvUtils {
public static <T> void writeListToCsv(List<T> list, Class<T> clazz, String filePath) throws IOException {
// 获取类的所有字段名
Field[] fields = clazz.getDeclaredFields();
String[] headers = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
headers[i] = fields[i].getName();
}
// 将List<ADto>转换成List<String[]>
List<String[]> rows = list.stream()
.map(obj -> {
String[] row = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
try {
fields[i].setAccessible(true);
row[i] = fields[i].get(obj).toString();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return row;
})
.collect(Collectors.toList());
// 写入CSV文件
try (CSVWriter writer = new CSVWriter(new FileWriter(filePath))) {
writer.writeNext(headers);
writer.writeAll(rows);
}
}
}
```
使用示例:
```java
List<ADto> list = new ArrayList<>();
// 添加数据到List<ADto>中
CsvUtils.writeListToCsv(list, ADto.class, "output.csv");
```
以上代码会在当前工程目录下生成名为`output.csv`的CSV文件,并将List<ADto>中的数据写入到文件中。
相关推荐
![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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.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)