Reader的子类选用

来源:互联网 发布:手机淘宝自动登录 编辑:程序博客网 时间:2024/05/21 17:35

今天需要从文本文件里读出内容,从一刚开始就独立编写,结果是这个样子。

    private static String getText0() {        File txt = new File("src/regex/Test");        InputStream is;        StringBuffer sb = new StringBuffer();        Reader reader = null;        try {            is = new FileInputStream(txt);//输入流            reader = new InputStreamReader(is, "UTF-8");//以utf-8读取输入流            char[] charBuffer = new char[30];//数组存储一个个字节            int c;//在while循环判断时,会消耗一个字节,用这个暂存。            while((c= reader.read())!=-1) {//这个地方会消耗一个字节                reader.read(charBuffer);//暂存到字节数组                sb.append((char)c).append(charBuffer);                c=0;//清除数据,防止判断时出问题                charBuffer = new char[30];//清除数据,防止判断时出问题            }            reader.close();            is.close();            System.out.println(sb);        } catch (Exception e) {            e.printStackTrace();        }        return sb.toString();    }

看以上代码,有点拖沓,在网上看到了FileReader,然后用了一把。

    private static String getText1() {        File file = new File("src/regex/Test");        try {            //FileReader fr = new FileReader(file);//准备资源,其实代码可以不用下面的BufferedReader,但是,FileReader没什么好用的读取方法,只能像上面的那个方法读取。            //上面的代码修正为以下内容,原因是FileReader总是默认用当前平台的编码方式读取,而且不能改            InputStreamReader isr = new InputStreamReader(file,"UTF-8");            BufferedReader br = new BufferedReader(isr);//而有这个,可以一行一行的读,比较方便            //总感觉读取文件要new这么大一堆有点怪怪的            String line = "";            StringBuilder sb = new StringBuilder();            while ((line = br.readLine()) != null) {//同样的,用于判断的那一行,如果不存储就会丢失                sb.append(line);            }            br.close();            fr.close();            System.out.println(sb);        } catch ( Exception e) {            e.printStackTrace();        }        return null;    }

这就是我的一点笔记

原创粉丝点击