应用Java泛型和反射导出CSV文件的方法
2014-12-18 08:56
821 查看
本文实例讲述了应用Java泛型和反射导出CSV文件的方法。分享给大家供大家参考。具体如下:
项目中有需求要把数据导出为CSV文件,因为不同的类有不同的属性,为了代码简单,应用Java的泛型和反射,写了一个函数,完成导出功能。
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文件
- C#导出数据到CSV和EXCEL文件时,过长的数值被转义的解决方法
- 导出excel、word、csv文件方法汇总
- php导出CSV文件时身份证号码显示为科学计数的解决方法
- Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
- php使用指定编码导出mysql数据到csv文件的方法
- 导出数据到CSV和EXCEL文件,过长的数值被转义的解决方法
- JS兼容浏览器的导出Excel(CSV)文件的方法
- Python导出数据到Excel可读取的CSV文件的方法
- 用两种不同的方法导出ORACLE 查询数据为CSV 文件 (python 代码 与 使用 utl_file 包)
- Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
- C#导出数据到CSV和EXCEL文件时,过长的数值被转义的解决方法
- C#导出数据到CSV和EXCEL文件时数字文本被转义的解决方法
- 数据导出为csv文件时 数值型数据为科学计数法 时间被截取的解决方法
- JS兼容浏览器的导出Excel(CSV)文件的方法
- datagrid数据导出到excel文件给客户端下载的几种方法 (xls,csv,html)
- asp.net 导入、导出csv文件简单应用
- 用csv导出文件时,每个cell加上双引号后,可以原样输入cell中的内容,不管是否cell中是否包含逗号或者换行,但是如果包含双引号,则换行失效,解决方法如下
- 导出excel、word、csv文件方法汇总
- Python导出数据到Excel可读取的CSV文件的方法