应用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
  • asp之家 软件编程 m.aspxhome.com