逐行读txt文件(读写文件try catch finally 处理空行,编码格式,文件流释放问题,处理读到重复问题)

来源:互联网 发布:网络购彩何时开售 编辑:程序博客网 时间:2024/05/04 01:54

实现功能如下:
Java逐行读取.txt文件里面的数据到一个list集合里面,再加工.
处理编码格式问题,
处理读到空行的问题,
处理读到数据重复问题,
处理文件流释放不合理问题.

    /**     * 测试逐行读txt文件并正确关闭文件流     */    private static void testFileStream() {        final Logger LOG = LoggerFactory.getLogger(CmsHome.class);        InputStreamReader read = null;        BufferedReader bufferedReader = null;        String serverFile = "D:/ss.txt";        Set<String> tempSet = Sets.newHashSet();        List<String> allRulesList = Lists.newArrayList();        String encoding = "utf-8";        try {            //new FileInputStream(serverFile)可能异常            read = new InputStreamReader(new FileInputStream(serverFile), encoding);//考虑到编码格式,serverFile 将要读取的文件的目录            bufferedReader = new BufferedReader(read);            String lineTxt;            //bufferedReader.readLine()可能异常            while ((lineTxt = bufferedReader.readLine()) != null) {                if (tempSet.add(lineTxt)) {   //set 去重复                    if (lineTxt.isEmpty()) {//处理空行                        continue;                    }                    allRulesList.add(lineTxt);                }            }        } catch (IOException e) {            LOG.debug("读取文件异常:" + e.getMessage());        } finally {            if (read != null) {                try {                    read.close();                } catch (IOException e) {                    LOG.debug("关闭文件read流异常:" + e.getMessage());                }            }            if (bufferedReader != null) {                try {                    bufferedReader.close();                } catch (IOException e) {                    LOG.debug("关闭文件bufferedReader流异常:" + e.getMessage());                }            }        }        //打印输出,验证执行结果。        for (String s : allRulesList) {            System.out.println(s);        }    }


如上图的测试结果,和d盘根目录下放置的一个txt文件以及文件的内容的展示。



0 0