java8实现:写一个大数据量出力到csv的共通方法,参数为List<ADto>、ADto.class、filePath,将list出力到csv文件中
时间: 2023-12-14 17:39:16 浏览: 94
以下是一个基本的实现示例:
```java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.List;
public class CsvWriter {
public static <T> void write(List<T> list, Class<T> clazz, String filePath) throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter(filePath));
// 写入表头
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
writer.write(field.getName());
writer.write(",");
}
writer.newLine();
// 写入数据
for (T t : list) {
for (Field field : fields) {
field.setAccessible(true);
try {
Object value = field.get(t);
if (value != null) {
writer.write(value.toString());
}
} catch (IllegalAccessException e) {
// 忽略访问异常
}
writer.write(",");
}
writer.newLine();
}
writer.flush();
writer.close();
}
}
```
使用方法:
```java
List<ADto> list = ...; // 初始化数据
String filePath = "..."; // 指定输出文件路径
CsvWriter.write(list, ADto.class, filePath); // 调用写入方法
```
注意事项:
- 本示例使用逗号分隔符,可根据需要自行修改。
- 对于非字符串类型的字段,需要在写入前进行类型转换。
- 对于字段值为 null 的情况,需要特别处理,此处示例中忽略了该情况。
阅读全文