应用Java泛型和反射导出CSV文件的方法
作者:shichen2014 时间:2022-02-25 19:50:17
本文实例讲述了应用Java泛型和反射导出CSV文件的方法。分享给大家供大家参考。具体如下:
项目中有需求要把数据导出为CSV文件,因为不同的类有不同的属性,为了代码简单,应用Java的泛型和反射,写了一个函数,完成导出功能。
public <T> void saveFile(List<T> list, String outFile) throws IOException {
if (list == null || list.isEmpty()) {
return;
}
if (StringUtils.isEmpty(outFile)) {
throw new IllegalArgumentException("outfile is null");
}
boolean isFirst = true;
BufferedWriter out = null;
try {
out = new BufferedWriter(new FileWriter(outFile));
for (T t : list) {
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
Class clazz = (Class) t.getClass();
Field[] fs = clazz.getDeclaredFields();
for (int i = 0; i < fs.length; i++) {
Field f = fs[i];
f.setAccessible(true);
try {
if (isFirst) {
sb1.append(f.getName());
sb1.append(",");
}
Object val = f.get(t);
if (val == null) {
sb2.append("");
} else {
sb2.append(val.toString());
}
sb2.append(",");
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
if (isFirst) {
out.write(sb1.toString());
isFirst = false;
out.newLine();
}
out.write(sb2.toString());
out.newLine();
}
} catch (IOException e1) {
throw e1;
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException e2) {
throw e2;
}
}
}
希望本文所述对大家的Java程序设计有所帮助。
标签:Java,导出,CSV,方法
0
投稿
猜你喜欢
springmvc分层领域模型概念详解
2021-09-07 01:21:51
Java提取两个字符串中的相同元素方法
2023-05-16 14:18:00
简单的java socket客户端和服务端示例
2023-06-27 18:13:27
Java实现简单猜拳游戏
2023-05-27 18:28:16
优化常见的java排序算法
2022-03-25 05:11:54
详解Spring中的Environment外部化配置管理
2023-11-23 05:24:24
Nacos框架服务注册实现流程
2023-07-07 10:18:30
Java Swing组件编程之JTable表格用法实例详解
2022-12-23 01:49:26
简单讲解java中throws与throw的区别
2022-06-01 05:16:55
Java面试题冲刺第五天--基础篇2
2023-10-07 13:17:04
Java EE项目中的异常处理总结(一篇不得不看的文章)
2023-06-16 23:35:26
struts2如何使用拦截器进行用户权限控制实例
2023-02-23 18:14:15
了解Java线程池创建过程
2022-09-29 20:45:49
JAVA IDEA 打开assert 设置方式
2022-08-19 13:48:49
feign 如何获取请求真实目的ip地址
2021-08-13 15:47:49
Java语言实现二叉堆的打印代码分享
2021-11-27 23:00:15
jsp+servlet实现简单登录页面功能(附demo)
2023-09-24 11:32:28
Java数据结构之数组(动力节点之Java学院整理)
2023-09-23 21:20:12
C#语法相比其它语言比较独特的地方(二)
2021-12-20 20:56:03
jdk动态代理源码分析过程
2023-03-01 05:05:59