Reader的子类选用

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

    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;

    }

这就是我的一点笔记

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值