java8实现:将List<ADto>出力成csv文件。参数为List<ADto>、ADto.class、filePath
时间: 2024-05-12 20:15:29 浏览: 99
可以使用Java 8的Stream API和CSVWriter库来实现将List<ADto>输出成csv文件的操作。具体实现步骤如下:
1. 引入CSVWriter依赖,例如Maven中的依赖配置:
```xml
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.3</version>
</dependency>
```
2. 编写输出csv文件的方法:
```java
import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.List;
public static <T> void writeCsvFile(List<T> list, Class<T> clazz, String filePath) throws IOException {
try (CSVWriter writer = new CSVWriter(new FileWriter(filePath))) {
// 获取所有字段名
Field[] fields = clazz.getDeclaredFields();
String[] fieldNames = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
fieldNames[i] = fields[i].getName();
}
writer.writeNext(fieldNames);
// 将对象列表转换成字符串数组列表
List<String[]> stringList = list.stream().map(item -> {
String[] strArray = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
try {
fields[i].setAccessible(true);
Object value = fields[i].get(item);
strArray[i] = value != null ? value.toString() : "";
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return strArray;
}).toList();
// 输出到csv文件
writer.writeAll(stringList);
}
}
```
3. 调用输出csv文件的方法:
```java
List<ADto> list = new ArrayList<>(); // 假设已经有一个ADto对象列表
String filePath = "/path/to/output.csv"; // 假设输出文件路径为/path/to/output.csv
writeCsvFile(list, ADto.class, filePath);
```
以上代码可以将List<ADto>对象列表输出成csv文件,输出文件的字段顺序和类型与ADto类中定义的字段顺序和类型一致。如果需要输出的字段和顺序不同,可以在writeCsvFile方法中对字段顺序进行调整。
阅读全文