转换流与缓冲流

版权声明:ssupdding https://blog.csdn.net/sspudding/article/details/88808499

转换流

转换流是字符和字节之间的桥梁,可以实现字符和字节之间的转换。

一、InputStreamReader

1、基本概念

InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。

每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。

为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

2、构造函数

在这里插入图片描述

3、常用方法

在这里插入图片描述

二、OutputStreamWriter

1、基本概念

OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节

同InputStreamReader一样,为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中,以避免频繁调用转换器。例如:
Writer out = new BufferedWriter(new OutputStreamWriter(System.out));

2、构造函数

在这里插入图片描述

3、常用方法

在这里插入图片描述

缓冲流

1、基本概念

java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装。当对文件或其他目标频繁读写或操作效率低,效能差。这时使用缓冲流能够更高效的读写信息。因为缓冲流先将数据缓存起来,然后一起写入或读取出来。

扫描二维码关注公众号,回复: 5984031 查看本文章

为什么要有缓冲流?
比如说,家里盖房子,有一堆砖头要搬在工地100米外,单字节的读取就好比你一个人每次搬一块砖头,从堆砖头的地方搬到工地,这样可定很费时间,然后好的方法就是多叫几个小伙伴帮你一起搬砖头,这样因为人多了,每次可以搬十块砖头,但效率还是很低,这就好比我们的字节/字符数组读写操作;然而聪明的人类会用小推车,每次先搬砖头搬到小车上,再利用小推车运到工地上去,这样你或者你的小伙伴们再从小推车上取砖头是不是方便多了呀!这样效率就会大大提高,缓冲流就好比我们的小推车;给砖头暂时提供一个可存放的空间;
(摘自网络,侵删)

注意:缓冲流属于包装流,只能对已有的流进行封装,不能直接关联文件进行操作

BufferedReader

  • 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取

  • 构造函数

BufferedReader(Reader in) :创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz) :创建一个使用指定大小输入缓冲区的缓冲字符输入流。
  • 特有方法
 String	readLine():读取文本行

该方法读到流末尾,返回null

BufferedWriter

  • 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

  • 构造函数

BufferedWriter(Writer out) :创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz) :创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
  • 特有方法
 void	newLine() :相当于在文本中分行

上述流的具体使用方法在下篇博客中介绍

猜你喜欢

转载自blog.csdn.net/sspudding/article/details/88808499