IO流详解——FileReader字符输入流

176 阅读2分钟

「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」。

前言

大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

本文主要介绍FileReader字符输入流的基本概念和使用。

欢迎点击传送门了解更多IO流。

IO流详解——FileInputStream字节输入流

IO流详解——FileOutputStream字节输出流

字符流

一切皆字节,那有了字节流为什么还要使用字符流呢。前面也稍微提到过,使用字符流读取时读取的是一个个字节,但是中文字符和其他字符在不同的编码格式下,会对应不同的字节数,因此在读写的过程中可能会产生乱码,所以就有了用来专门读写字符的流,字符流用来读取一个个字符,这样就不会因为读写的不同的字节数而产生的乱码的现象。

本篇我们先来学习字符输入流FileReader

FileReader使用字符流读取文件

1.1 什么是FileReader

FileReader是InputStreamReader的子类,是用来读取字符文件的便捷类。

1.2 FileReader的构造方法

FileReader(File file) 
          在给定从中读取数据的 File 的情况下创建一个新 FileReader。  
FileReader(String fileName) 
          在给定从中读取数据的文件名的情况下创建一个新 FileReader。 

参数解释:

  • FIle file:文件对象
  • String name:文件具体路径

【实例展示】:

String path = "Study01\src\main\java\FileDemo\1.txt";
File file = new File(path);
FileReader fileReader = new FileReader(file);
FileReader fileReader1 = new FileReader(path);

1.3 FileReader的常用方法

FileReader的方法也都是继承而来,常用的方法如下。

void close() 
          关闭该流并释放与之关联的所有资源。 
int read() 
          读取单个字符。 
int read(char[] cbuf) 
          将字符读入数组。 
int read(char[] cbuf, int offset, int length) 
          将字符读入数组中的某一部分。

read方法读取到文件末尾时会返回-1,可以作为循环结束的标志。(和字节输入流参照学习。)

int b=0;
while((b=fileReader.read())!=-1){
    System.out.println((char)b);
}

image-20211217220356377

读取多个字符:

char chs[] = new char[1024];
while((b = fileReader.read(chs))!=-1){
    System.out.println(new String(chs,0,b));
}

image-20211217220729067 关于其他的重载的read方法这里就不再缀诉,如果不太了解建议点击传送门学习字节输入流的read方法,使用大致相同。

1.4 FileReader小结

FileReader使用步骤:

  1. 创建FileReader流对象。
  2. 使用read方法读取数据,读取到文件末尾会返回-1.
  3. 关闭流对象。

小结

以上就是关于字符流和字符输入流的一些概述,希望对读者有所帮助,如有不正之处,欢迎掘友们留言指正。