使用FileReader类的read(char [] chars)方法的注意点:

使用read(char [] chars)方法的时候注意点:

使用read(char [] chars)方法读取文件中的时候 — 如果这个时候我们的文件中有2从a - m一共十三个个英文字母,然后我们创建的缓冲数组chars的长度为5 ---- 这个时候我们每次就会读取五个英文字母并且将读取的五个英文字母装入到我们的缓冲数组中

第一次的时候我们的缓冲数组中的数据为:

|a,b,c,d,e|

第二次的时候我们的缓冲数组中的数据为:

|f,g,h,i,j|

第三次的时候我们的文件中的剩余为读取的元素剩余了3个,这个时候就会使用这三个元素替换缓冲数组中的前三个位置,这个时候缓冲数组中的后两个位置的元素还是 i 和 j

所以第三次的时候我们的缓冲数组中的数据为:

|k,l,m,i,j|

所以这个时候如果我们要输出我们的文件中的数据,这个时候我们就要输出数组中前三个元素----也就是输出我们每次读入到数组中的元素个数个

  • 如果这个时候输出的循环控制条件是数组长度的话,这个时候输出结果中的第三次输出就多了一个i 和 j

例题: 相对于本项目之下有一个文件hi.txt,这个文件中的内容为: abcdefghjklm ,一共是十三个元素

这里我们先举一个错误例子 — 使用数组长度作为循环控制条件(这个时候输出为: a b c d e f g h i j k l m i j ),这个时候我们可以发现末尾多了一个i 和 j

package IO流.FileReader.读取数据;import java.io.File;
import java.io.FileReader;
import java.io.IOException;public class Demo3 {public static void main(String[] args) throws IOException{File file = new File("hi.txt");FileReader fileReader = new FileReader(file);char [] chars = new char[5];while(fileReader.read(chars)!=-1){/*这个时候使用的是chars.length作为循环控制条件,这个时候第三次我们读取到数组的时候读取的是[K,l,m]但是这个时候我们输出的时候却输出了五个元素,这个时候后两个元素就是上一次放进数组中的最后两个元素i和j所以: 这个时候我们应该是使用每一次的read(chars)方法的返回值作为循环控条件如果使用read(chars)方法返回值作为循环控制条件,这个时候第三次的时候我们读取了三个数据,输出的也就是三次也就是三个数据*/for(int i = 0; i< chars.length ; i++){System.out.println(chars[i]);}}fileReader.close();}
}

这个时候我们再使用每次读取的实际元素个数作为循环控制条件,也就是使用read(char [] chars)方法的返回值作为循环控制条件----这个时候输出就是正确的

package IO流.FileReader.读取数据;import java.io.File;
import java.io.FileReader;
import java.io.IOException;public class Demo4 {public static void main(String[] args) throws IOException{//File类实例化File file = new File("hi.txt");//FileReader流实例化FileReader fileReader = new FileReader(file);//创建缓冲数组char [] chars = new char[5];//声明一个临时变量,这个临时变量就用来存储每次read()方法的返回值int size = 0;while ((size = fileReader.read(chars)) != -1){for(int i = 0 ; i< size ; i++){System.out.println(chars[i]);}}fileReader.close();}
}
  • 这个时候我们还是没有使用try ---- catch ---- finally来解决异常,这个时候我们主要是为了测试read(char[] cbuf)方法

FileReader类的read(char [] chars)方法使用的注意点 [Java]相关推荐

  1. python class用法_python原类、类的创建过程与方法

    [小宅按]今天为大家介绍一下python中与class 相关的知识-- 获取对象的类名 python是一门面向对象的语言,对于一切接对象的python来说,咱们有必要深入的学习与了解一些知识 首先大家 ...

  2. python原类、类的创建过程与方法

    今天为大家介绍一下python中与class 相关的知识-- 获取对象的类名 python是一门面向对象的语言,对于一切接对象的python来说,咱们有必要深入的学习与了解一些知识 首先大家都知道,要 ...

  3. 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )

    文章目录 I . 调用 Java 方法流程 II . 获取 jclass 对象 ( GetObjectClass ) III . 获取 jclass 对象 ( FindClass ) IV . JNI ...

  4. java filereader类_Java FileReader类

    FileReader类从InputStreamReader类继承而来.该类按字符读取流中数据.可以通过以下几种构造方法创建需要的对象. 在给定从中读取数据的 File 的情况下创建一个新 FileRe ...

  5. java中的 FileWriter类 和 FileReader类的一些基本用法

    java中的 FileWriter类 和 FileReader类的一些基本用法 1,FileWriter类(字符输出流类) 构造方法:FileWriter fw = new FileWriter(St ...

  6. FileReader类

    FileReader类说明及使用 FileReader类继承自InputStramReader,它用于读取字符流. Reader是一个抽象类,FileReader是其子类. FileReader fr ...

  7. java new Filereader_Java FileReader类 - Java 教程 - 自强学堂

    Java FileReader类 FileReader类从InputStreamReader类继承而来.该类按字符读取流中数据.可以通过以下几种构造方法创建需要的对象. 在给定从中读取数据的 File ...

  8. java new Filereader_Java FileReader类

    首页 > 基础教程 > IO流 > Reader类 Java FileReader类 FileReader用于以字符为单位读取文本文件,能够以字符流的形式读取文件内容.除了读取的单位 ...

  9. C++ day22 继承(二)基类指针数组通过虚方法实现智能的多态

    继承一共有三种: 公有继承 私有继承 保护继承 文章目录 公有继承 基类和派生类的关系 is-a(用公有继承表示"是一种"的关系) has-a uses-a is-like-a i ...

最新文章

  1. android IntentService生命周期问题
  2. java ee s2sh复习题_JavaEESSH框架答案试题题目及答案,期末考试题库,章节测验答案...
  3. C4D插件:Springy for Mac 动​​画对象添加重叠动作插件
  4. 流行的编程语言,Audiophile Linux发行版,GNU,Bash,Raspberry PI,DevOps,GIMP等
  5. C语言在STM32中的内存分配
  6. 在centos下安装django
  7. asp if 显示按钮_ASP.NET Core 3.1入门教程(二)
  8. 活灵活现用Git-技巧篇
  9. 一个微信群机器人PHP,vbot微信机器人操作联系人的API(3)微信群API
  10. html图片自动适应屏幕代码,css让图片宽度自适应屏幕的例子
  11. java.lang.IllegalArgumentException: Mapped Statements collection already contains value for ...
  12. css3-简笔画 腾讯QQlogo
  13. 公司不让使用XShell破解版后,我准备用这种方式!
  14. Mac小技巧|怎么移动Mac状态栏的图标
  15. 三国杀代码12武将C++
  16. PDF分割与合并(充分利用Spire的bug实现操作PDF)
  17. 基于GPT模型的对话系统
  18. 替代变量与SQL*Plus环境设置 (转自一沙弥的世界)
  19. 做SEO需要学习什么?做好SEO必备的七大技能
  20. 多模态理论张德禄_学术会议 | 适用语言学与多模态国际会议

热门文章

  1. 智安网络|弹性网络与网络安全:保卫数字世界的关键联结
  2. 使用vscode开发esp32
  3. 【3D商城】鼠标滚动控制全屏切换
  4. SpringBoot+Lombok使用
  5. 修改系统Android版本,版本号
  6. 8.Imitation Learning模仿学习(李宏毅)
  7. SIMD指令集分析(C/C++)
  8. 初创期企业运营必备手册-工具包-商业计划书实际案例参考精选
  9. 地球绕着太阳转的小动画
  10. 计算机科学世界排名前5的著名错误