• JavaBean中数据写入文件工具类


      1 import java.beans.PropertyDescriptor;
      2 import java.io.BufferedReader;
      3 import java.io.BufferedWriter;
      4 import java.io.File;
      5 import java.io.FileInputStream;
      6 import java.io.IOException;
      7 import java.io.InputStream;
      8 import java.io.InputStreamReader;
      9 import java.io.Writer;
     10 import java.lang.reflect.Field;
     11 import java.lang.reflect.Method;
     12 import java.util.ArrayList;
     13 import java.util.List;
     14 
     15 import org.apache.commons.io.output.FileWriterWithEncoding;
     16 
     17 import com.genilex.gRule.ocr.dto.DrivingLicense;
     18 
     19 public class FileUtil {
     20     private FileUtil(){}
     21     
     22     /**
     23      * 实体类数据写入文件中
     24      * @param <T>
     25      * @param t 实体类
     26      * @param fileName 文件名(带后缀)
     27      * @param fileDir 文件夹路径,不包括文件名及后缀
     28      * @return
     29      */
     30     public static <T> boolean beanToFile(T t,String fileName,String fileDir){
     31         boolean bl = false;
     32         try {
     33             //取得类中所有属性
     34             Class clazz = t.getClass();
     35             Field[] fields = clazz.getDeclaredFields();
     36             
     37             //判断文件夹是否存在,不存在则创建
     38             File fileDir2 = new File(fileDir);
     39             if(!fileDir2.exists()){
     40                 fileDir2.mkdirs();
     41             }
     42             //文件
     43             File file = new File(fileDir,fileName);
     44             
     45             //需要封装的list
     46             List<String> list = new ArrayList<String>();
     47             //header数组,用来设置数据字符串,使其一一按顺序对应
     48             String[] titles = null;
     49             if(!file.exists()){//如果文件不存在,则创建文件并加header
     50                 //header字符串设置
     51                 StringBuilder titleStr = new StringBuilder();
     52                 for (int i = 0; i < fields.length; i++) {
     53                     if(i > 0){
     54                         titleStr.append(",");
     55                     }
     56                     titleStr.append(fields[i].getName());
     57                 }
     58                 list.add(titleStr.toString());
     59                 
     60                 titles = titleStr.toString().split(",");
     61             }else{//如果文件存在,则继续追加数据
     62                 //读取文件第一行获得header
     63                 titles = readFirstLine(file).replace(""","").split(",");
     64             }
     65             //封装数据字符串,与header按顺序对于设置
     66             list.add(beanToStr(t,titles,clazz));
     67             bl = listToFile(list,file);
     68         } catch (Exception e) {
     69             e.printStackTrace();
     70         }
     71         return bl;
     72     }
     73     
     74     /**
     75      * 根据传入的key数组设置bean中数据,按key的顺序封装成字符串
     76      * @param obj javaBean
     77      * @param keys 列名数组
     78      * @param clazz Class
     79      * @return
     80      */
     81     public static String beanToStr(Object obj,String[] titles,Class<?> clazz){
     82         try {
     83             StringBuilder sb = new StringBuilder();
     84             
     85             for (int i = 0; i < titles.length; i++) {
     86                 PropertyDescriptor pd = new PropertyDescriptor(titles[i], clazz);
     87                 //得到get方法
     88                 Method method = pd.getReadMethod();
     89                 //执行get方法
     90                 Object value = method.invoke(obj);
     91                 if(i > 0){
     92                     sb.append(",");
     93                 }
     94                 //封装数据,用","隔开
     95                 sb.append(value != null ? String.valueOf(value) : "");
     96             }
     97             return sb.toString();
     98         } catch (Exception e) {
     99             e.printStackTrace();
    100             return null;
    101         }
    102     }
    103     
    104     /**
    105      * 读取文件第一行
    106      * @param file
    107      * @return
    108      */
    109     public static String readFirstLine(File file){
    110         String res = null;
    111         
    112         InputStream is = null;
    113         BufferedReader buffer = null;
    114         try {
    115             is = new FileInputStream(file);
    116             buffer = new BufferedReader(new InputStreamReader(is,"UTF-8"));
    117             
    118             res = buffer.readLine();
    119         } catch (Exception e) {
    120             e.printStackTrace();
    121         }finally{
    122             if(buffer != null){
    123                 try {
    124                     buffer.close();
    125                 } catch (IOException e) {
    126                     e.printStackTrace();
    127                     buffer = null;
    128                 }
    129             }
    130             if(is != null){
    131                 try {
    132                     is.close();
    133                 } catch (IOException e) {
    134                     e.printStackTrace();
    135                     is = null;
    136                 }
    137             }
    138         }
    139         return res;
    140     }
    141     
    142     /**
    143      * list 写入文件
    144      * @param list
    145      * @param file
    146      * @return
    147      */
    148     public static boolean listToFile(List<String> list,File file){
    149         boolean bl = true;
    150         
    151         Writer writer = null;
    152         BufferedWriter buffer = null;
    153         try {
    154             writer = new FileWriterWithEncoding(file,"UTF-8",true);
    155             buffer = new BufferedWriter(writer);
    156             
    157             if(list != null && !list.isEmpty()){
    158                 for (String str : list) {
    159                     buffer.write(str);
    160                     buffer.newLine();
    161                 }
    162             }
    163         } catch (Exception e) {
    164             e.printStackTrace();
    165             bl = false;
    166         }finally{
    167             if(buffer != null){
    168                 try {
    169                     buffer.close();
    170                 } catch (IOException e) {
    171                     e.printStackTrace();
    172                     buffer = null;
    173                 }
    174             }
    175             if(writer != null){
    176                 try {
    177                     writer.close();
    178                 } catch (IOException e) {
    179                     e.printStackTrace();
    180                     writer = null;
    181                 }
    182             }
    183         }
    184         return bl;
    185     }
    186     
    187     public static void main(String[] args) {
    188         DrivingLicense dl = new DrivingLicense();
    189         dl.setVin("你");
    190         dl.setAddress("好");
    191         dl.setEngineNo("啊");
    192         
    193         beanToFile(dl, "xingshizheng.csv", "D:\xingshizeng");
    194     }
    195 }
  • 相关阅读:
    Scrapy中间件
    Scrapy简介
    Scrapy解析器xpath
    postman
    yarn
    brew 安装 yarn 时候失败
    immutability-helper 用途+使用方法
    js 正则
    react redux 应用链接
    react 事件传参数
  • 原文地址:https://www.cnblogs.com/jason123/p/7729933.html
Copyright © 2020-2023  润新知