亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

應(yīng)用Java泛型和反射導(dǎo)出CSV文件的方法

 更新時(shí)間:2014年12月18日 08:56:37   投稿:shichen2014  
這篇文章主要介紹了應(yīng)用Java泛型和反射導(dǎo)出CSV文件的方法,通過(guò)一個(gè)自定義函數(shù)結(jié)合泛型與反射的應(yīng)用實(shí)現(xiàn)導(dǎo)出CSV文件的功能,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了應(yīng)用Java泛型和反射導(dǎo)出CSV文件的方法。分享給大家供大家參考。具體如下:

項(xiàng)目中有需求要把數(shù)據(jù)導(dǎo)出為CSV文件,因?yàn)椴煌念愑胁煌膶傩裕瑸榱舜a簡(jiǎn)單,應(yīng)用Java的泛型和反射,寫了一個(gè)函數(shù),完成導(dǎo)出功能。

復(fù)制代碼 代碼如下:
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;
            }
        }
}

希望本文所述對(duì)大家的Java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Spring Security認(rèn)證機(jī)制源碼層探究

    Spring Security認(rèn)證機(jī)制源碼層探究

    SpringSecurity是基于Filter實(shí)現(xiàn)認(rèn)證和授權(quán),底層通過(guò)FilterChainProxy代理去調(diào)用各種Filter(Filter鏈),F(xiàn)ilter通過(guò)調(diào)用AuthenticationManager完成認(rèn)證 ,通過(guò)調(diào)用AccessDecisionManager完成授權(quán)
    2023-03-03
  • Java HashSet集合存儲(chǔ)遍歷學(xué)生對(duì)象代碼實(shí)例

    Java HashSet集合存儲(chǔ)遍歷學(xué)生對(duì)象代碼實(shí)例

    這篇文章主要介紹了Java HashSet集合存儲(chǔ)遍歷學(xué)生對(duì)象代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot創(chuàng)建Docker鏡像的方法步驟

    SpringBoot創(chuàng)建Docker鏡像的方法步驟

    這篇文章主要介紹了SpringBoot創(chuàng)建Docker鏡像的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 新手學(xué)習(xí)JQuery基本操作和使用案例解析

    新手學(xué)習(xí)JQuery基本操作和使用案例解析

    這篇文章主要介紹了新手學(xué)習(xí)JQuery基本操作和使用案例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • mybatisplus之使用@Select解讀

    mybatisplus之使用@Select解讀

    這篇文章主要介紹了mybatisplus之使用@Select解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • springdata jpa使用Example快速實(shí)現(xiàn)動(dòng)態(tài)查詢功能

    springdata jpa使用Example快速實(shí)現(xiàn)動(dòng)態(tài)查詢功能

    這篇文章主要介紹了springdata jpa使用Example快速實(shí)現(xiàn)動(dòng)態(tài)查詢功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Mybatis的介紹、基本使用、高級(jí)使用

    Mybatis的介紹、基本使用、高級(jí)使用

    這篇文章主要介紹了Mybatis的介紹、基本使用、高級(jí)使用,Mybatis是一款半自動(dòng)的ORM持久層框架,具有較高的SQL靈活性,如何使用看這篇就夠了,需要的朋友可以參考下
    2023-03-03
  • 在Java的MyBatis框架中建立接口進(jìn)行CRUD操作的方法

    在Java的MyBatis框架中建立接口進(jìn)行CRUD操作的方法

    這篇文章主要介紹了在Java的MyBatis框架中建立接口進(jìn)行CRUD操作的方法,CRUD是指在做計(jì)算處理時(shí)的增加(Create)、重新取得數(shù)據(jù)(Retrieve)、更新(Update)和刪除(Delete)幾個(gè)單詞的首字母簡(jiǎn)寫,需要的朋友可以參考下
    2016-04-04
  • Java中的CAS鎖機(jī)制(無(wú)鎖、自旋鎖、樂(lè)觀鎖、輕量級(jí)鎖)詳解

    Java中的CAS鎖機(jī)制(無(wú)鎖、自旋鎖、樂(lè)觀鎖、輕量級(jí)鎖)詳解

    這篇文章主要介紹了Java中的CAS鎖機(jī)制(無(wú)鎖、自旋鎖、樂(lè)觀鎖、輕量級(jí)鎖)詳解,CAS算法的作用是解決多線程條件下使用鎖造成性能損耗問(wèn)題的算法,保證了原子性,這個(gè)原子操作是由CPU來(lái)完成的,需要的朋友可以參考下
    2024-01-01
  • Java多態(tài)中的向上轉(zhuǎn)型與向下轉(zhuǎn)型淺析

    Java多態(tài)中的向上轉(zhuǎn)型與向下轉(zhuǎn)型淺析

    多態(tài)是指不同類的對(duì)象在調(diào)用同一個(gè)方法是所呈現(xiàn)出的多種不同行為,下面這篇文章主要給大家介紹了關(guān)于Java多態(tài)中向上轉(zhuǎn)型與向下轉(zhuǎn)型的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02

最新評(píng)論