java读取txt文件里的内容,并转化成javaBean

公司业务的需求:将指定目录下的txt文件,按文件名(yyyy-MM-dd.txt)倒排,取出最新的一个文件,读取并转化成javaBean,然后批量入库

txt文件样例:11&&5456&&klkl&&ygy&&88&&00&&121&&kkk&&2342&&yy&&tt&&rr&&ee

注:用&&隔开值

实现:

1.获取到文件:

        /*1.读取文件所在位置*/
        File dir = new File("D:/data");
        //获取文件列表
        File[] files = dir.listFiles();
        //根据文件名倒排
        List<File> collect = Arrays.asList(files).stream()
                .sorted(Comparator.comparing(File::toString).reversed())
                .collect(Collectors.toList());
        File file = new File(collect.get(0).toString());

 2.编写读取和转化bean工具类

public class ReadTxt {
    /**
     * 1.一次性读取txt文件的内容 将文件内容存入集合
     * @param file 想要读取的文件对象
     * @return 返回文件内容
     */
   public static <T> ArrayList<T> txt2String(Class<T> clazz,File file){
        ArrayList<T> al = new ArrayList<>();
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
            String s = null;
            while((s = br.readLine())!=null){//使用readLine方法,一次读一行
                String[] sz = s.split("&&");
                //反射获取类所有的属性
                Field[] declaredFields = clazz.getDeclaredFields();
                if(sz.length!=declaredFields.length){//长度不一致,说明数据有问题,直接返回
                    return al;
                }
                T t = clazz.newInstance();
                for (int i = 0; i < declaredFields.length; i++) {
                    declaredFields[i].setAccessible(true);//忽略访问修饰符的检查
                    declaredFields[i].set(t,sz[i]);//给属性赋值
                }
                al.add(t);
            }
            br.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        return al;
    }
}

3.调用

ArrayList<Info> al = ReadTxt.txt2String(Info.class,file);

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值