读取文件内容并组装成List<Bean>

来源:互联网 发布:无法读取碳粉盒数据 编辑:程序博客网 时间:2024/06/06 17:33

今天写了一个读取文件的操作,主要是由于while循环里的操作有点意义,所以记录下来。

public static List<FileVo> getInfoFromFile(FileConfig config) throws Exception{        File file = new File(config.getFilePath());        String splitLine = config.getSplitLine();        String encode = config.getEncode();        String zookeeperUrl = config.getZookeeperUrl();        Map<String,String> map = new HashMap<String,String>();        StringBuffer context = new StringBuffer();        String info = null;        BufferedReader reader = null;        List<FileVo> list = new LinkedList<>();        try {            reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),encode));            while ((info= reader.readLine())!= null){                if (!info.contains("=")&&!info.startsWith(splitLine)){                    continue;                }                if (info.startsWith(splitLine)){                    System.out.println(splitLine);                    FileVo vo = new FileVo();                    vo.setDepartmentCode(map.get("departmentCode"));                    vo.setDepartmentName(map.get("departmentName"));                    vo.setInterfaceName(map.get("interfaceName"));                    vo.setInterfaceCode(map.get("interfaceCode"));                    vo.setInputColumns(map.get("inputColumns"));                    vo.setInputColumnsArr(map.get("inputColumns").split(","));                    vo.setInputColumnNames(map.get("inputColumnNames"));                    vo.setInputColumnNamesArr(map.get("inputColumnNames").split(","));                    vo.setOutputColumnsFirst(map.get("outputColumnsFirst"));                    vo.setOutputColumnsFirstArr(map.get("outputColumnsFirst").split(","));                    vo.setOutputColumnsSecond(map.get("outputColumnsSecond"));                    vo.setOutputColumnsSecondArr(map.get("outputColumnsSecond").split(","));                    vo.setOutputColumnNames(map.get("outputColumnNames"));                    vo.setoutputColumnNamesArr(map.get("outputColumnNames").split(","));                    vo.setZookeeperUrl(zookeeperUrl);                    vo.setDepartmentDirectory(map.get("departmentDir"));                    vo.setUseScenes(map.get("useScenes"));                    list.add(vo);                    map.clear();                    continue;                }                String[] array = info.split("=");                String key = array[0];                String value = array[1];                System.out.println(key+":"+value);                map.put(key,value);            }            System.out.println(context);        }finally {            if (reader != null){                reader.close();            }        }        return list;    }

这里写图片描述
读取的文件内容格式如上,存在多个相同的字段,使用************作为每个vo的分割线。FileVo定义了相关的属性,这里就不黏贴了。
主要关注在while循环里的操作:
第一个if判断去掉空行或者无效行,第二个if判断当走到分割线 表明已经走完一个vo,此时需要设置进去,这里用了map作为链接文本数据和vo对象设置的桥梁。走完之后将map清空并break。

1 0
原创粉丝点击