java8实现:写一个方法,参数为List<ADto>、ADto.class、filepath,将List<ADto>出力为csv文件,自动将ADto的字段名出力为表头
时间: 2023-12-10 13:37:43 浏览: 81
下面是一个简单的Java 8实现,用于将List<ADto>对象写入CSV文件:
```java
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.List;
public class CsvWriter {
public static void write(List<ADto> list, Class<?> clazz, String filePath) throws IOException {
FileWriter writer = new FileWriter(filePath);
// 获取ADto类的字段名
Field[] fields = clazz.getDeclaredFields();
String[] headers = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
headers[i] = fields[i].getName();
}
// 写入表头
writer.append(String.join(",", headers)).append("\n");
// 写入数据
for (ADto obj : list) {
String[] values = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
fields[i].setAccessible(true);
try {
Object value = fields[i].get(obj);
values[i] = value != null ? value.toString() : "";
} catch (IllegalAccessException e) {
values[i] = "";
}
}
writer.append(String.join(",", values)).append("\n");
}
writer.flush();
writer.close();
}
}
```
使用方法:
```java
List<ADto> list = ...
CsvWriter.write(list, ADto.class, "path/to/output.csv");
```
其中,ADto是你自己定义的类,需要替换成实际的类名;filepath是输出文件的路径。
阅读全文