栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

FileReader中使用read(char [] cbuf)方法读取数据 [Java]

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

FileReader中使用read(char [] cbuf)方法读取数据 [Java]

FileReader中使用read(char [] cbuf)方法读取数据 read(char [] cbuf);
  • 读取文件中的数据,以字符为单位,每次读取cbuf数组长度个数据到我们的cbuf数组中,如果最后一次文件中剩余的未读取的数据不足装满这个数组,这个时候就默认从第一个位置(也就是索引为0的位置)开始替换,而数组中后面的几个元素没有替换,还是倒数第二次读取的数据
  • 返回每次读入cbuf数组中的字符的个数,如果达到文件末尾,返回-1;
  • 这个方法中的形参cbuf的含义就是"charbuffer",就是字符缓冲的意思
    • 因为我们使用read()方法一次读取一个字符的的话,我们要执行的循环次数太多了,所以我们就像可以使用一个缓冲区(其实就是一个char [] )先将一部分数据一次存储到这个缓冲区中,然后我们一次就可以使用这个缓冲区中的全部数据

eg:这里我们通过一个程序来理解read(char [] cbuf)方法的使用 ----这个例子中我们通过FileReader类来读取数据

package IO流.FileReader.读取数据;

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

public class Demo2 {
    //这里我们将异常抛出了,按理这个时候我们应该使用try -- catch --- finally,但是这个时候我们只是做一个测试,
    //我们就使用throws + 异常类型将异常对象抛出了
    public static void main(String[] args) throws IOException{

        
        File file = new File("hi.txt");
        
        FileReader fileReader = new FileReader(file);
        
        char [] chars = new char[5];
        
        int size= 0;
        
        //这里我们提供了两种遍历方式都可以使用
//        while((size = fileReader.read(chars)) != -1){
//            for (int i = 0; i < size; i++) {
//                System.out.println(chars[i]);
//            }
//        }
        while((size = fileReader.read(chars)) != -1){
            String str = new String(chars,0,size);
            System.out.print(str);
        }
        
        fileReader.close();
    }
}

  • 注意: 这个时候我们只是为了做一个测试,所以这里我们使用throws + 异常类型将异常对象直接抛出了,这个方式是错误的,这个时候我们应该是使用try ---- catch ---- finally的方式来处理异常,将我们的关闭流的操作放到finally代码块中
    • 这个时候要注意,很可能我们还没有创建流对象就出现异常了,这个时候如果执行finally中的关闭流的操作就会出现一个空指针异常,所以这个时候我们最好进行一个if判断,如果流对象不为空再执行关闭流的操作
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683322.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号