Java IO流FileReader中read(char [] cbuf)读入数据

1.FileReader类的概述

  • FileReader是用来访问文件的字符输入流,是InputStreamReader类的子类

  • FileReader用于读取字符串,因此,读取基于字符串的数据是一个不错的选择

  • FileReader通常由更高级的对象(如BufferedReader)包装,这些对象可以提高性能并提供更方便的数据处理方式

2.read(char [] cbuf)方法介绍

  • 此方法用于读入数组,相比于read()方法提高了很高的执行效率

  • cbuf 为字符缓冲区

  • 它返回读取到的字符数,如果已经到达流的末尾,则返回-1

  • len 为要读取的最大字符数

3.方法示例

package io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class IOTest {

    public static void main(String[] args) throws IOException {

        /*
          对read()操作升级: 使用read()重载方法
         */
        FileReader fr1 = null;
        try{
            //1.File类的实例化
            File file1 = new File("hello.txt");

            //2.FileReader流的实例化
            fr1 = new FileReader(file1);

            //3.读入的操作
            //read(char[] cbuf): 返回每次读入cbuf数组中的字符的个数.如果到达文件末尾,返回-1
            char[] cbuf = new char[5];
            int len;
            while ((len = fr1.read(cbuf)) != -1){
                /*//错误的写法
                for (int i = 0; i < cbuf.length; i++) {
                    System.out.println(cbuf[i]);
                }*/
                //正确的写法
                for (int i = 0; i < len; i++) {
                    System.out.println(cbuf[i]);
                }
            }
        }catch(IOException e){
             e.printStackTrace();
        }finally {
            if (fr1 !=null){
                //4.资源的关闭
                fr1.close();
            }
        }

    }
}

注意:
   此处在while语句中,不能使用cubf.length


版权声明:本文为weixin_52629592原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。