IO流详解——InputStreamReader转换流

277 阅读2分钟

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

前言

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

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

摘要

本文主要介绍InputStreamReader转换流的基本概念和使用。

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

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

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

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

IO流详解——FileWriter字符输出流

IO流详解——OutputStreamWriter转换流

昨天我们已经了解了OutputStreamWriter转换流,今天我们继续学习转换流InputStreamReader。

1. InputStreamReader

InputStreamReader是FileInputStream的父类,是字节流通向字符流的桥梁。通过使用指定的字符集或平台默认使用的字符集把读取字节流为字符流。

简单来说就是按照指定的编码将文件读取出来,操作的对象是字节,其实就相当于是个解码的过程。

1.1 InputStreamReader的构造方法

【构造方法】

InputStreamReader(InputStream in) 
          创建一个使用默认字符集的 InputStreamReader。 
InputStreamReader(InputStream in, Charset cs) 
          创建使用给定字符集的 InputStreamReader。 
InputStreamReader(InputStream in, CharsetDecoder dec) 
          创建使用给定字符集解码器的 InputStreamReader。 
InputStreamReader(InputStream in, String charsetName) 
          创建使用指定字符集的 InputStreamReader。 

【实例展示】:

  1. 使用平台默认的字符集,即将字节文件,按照平台默认的字符集读取。
InputStreamReader isr = new InputStreamReader(new FileInputStream(new File("D:\1.txt")));

2.使用指定的字符集读取文件。

InputStreamReader isr1 = new InputStreamReader(new FileInputStream(new File("D:\1.txt")),"utf-8");

1.2 InputStreamReader的常用方法

下面是InputStreamReader的一些常用方法,最需要我们关注的还是read的各种重载方法和close方法。

void close() 
          关闭该流并释放与之关联的所有资源。 
 String getEncoding() 
          返回此流使用的字符编码的名称。 
 int read() 
          读取单个字符。 
 int read(char[] cbuf) 
          将字符读入数组。 
 int read(char[] cbuf, int offset, int length) 
          将字符读入数组中的某一部分。 
 boolean ready() 
          判断此流是否已经准备好用于读取。 

【实例展示】:

这里就只介绍读取多个字符的方法,不再过多介绍其他read方法的使用,如果想要了解,可以参考文章开始提供的链接。

char[] c = new char[1024];
//读取单个字符
int read = isr.read();
int len=0;
//读取多个字符
while((len=isr.read(c))!=-1){
    System.out.println(c);
}
//释放流资源
isr.close();

1.3 InputStreamReader小结

使用InputStreamReader步骤:

  1. 创建InputStreamReader流对象。参数是InputStream对象 ,可以使用FileInputStream。
  2. 使用read读取文件。
  3. 使用close方法关闭流资源。

小结

以上就是我对于InputStreamReader转换流的一些理解,希望对读者有所帮助,如有不正之处,欢迎留言指正。