1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java读取txt文件里的内容 并转化成javaBean

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

时间:2021-04-09 20:25:52

相关推荐

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(paring(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);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。