1、 基本概括
2 、主要介绍
2.1 高效流BufferedReader和BufferedWriter的优势
提高效率:为了提高字符流读写的效率,引入了缓冲机制,进行字符批量的读写,提高了单个字符读写的效
率。BufferedReader用于加快读取字符的速度,BufferedWriter用于加快写入的速度。
简化了操作。
2.2 BufferedReader 缓冲区大小
BufferedReader和BufferedWriter类各拥有8192个字符的缓冲区。当BufferedReader在读取文本文件时,会
先尽量从文件中读入字符数据并放满缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲
区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储
至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。
2.3 ReusableBufferedReader:可重用的 BufferedReader
标准 Java 的弱点之一BufferedReader是它只能使用一次。一旦你关闭它,它就不再可用。如果需要读取大量
文件或网络流,则必须为要读取的每个文件或网络流创建一个新的 BufferedReader。这意味着您正在创建一
个新对象,更重要的是,创建一个新的 char 数组,该数组用作 BufferedReader 内的缓冲区。如果读取的文
件或流的数量很高,并且它们被快速读取,这会给 Java 垃圾收集器带来压力。
另一种方法是创建一个可重用的 BufferedReader ,您可以在其中替换基础 source Reader,因此可以重用
BufferedReader 及其内部字节数组缓冲区。具体实现可以上网查询。
2.4 readLine()方法的原理和newLine()的底层原理
readLine():无论是读一行,获取读取多个字符,其最终都是在硬盘上一个一个的读取。所以最终使用的还是
read()方法一次读一个的方法。
newLine():根据系统来决定换行符
注意 不同的操作系统中换行符是不同的
-
window:Windows系统里面,每行结尾是 回车+换行(CR+LF),即“\r\n”;
-
linux:Unix系统里,每行结尾只有 换行CR,即“\n”;
-
mac:Mac系统里,每行结尾是 回车CR 即'\r'。
2.5 System.in
从标准输入流System.in中直接读取使用者输入时,使用者每输入一个字符,System.in就读取一个字符。为了
能一次读取一行使用者的输入,使用了BufferedReader来对使用者输入的字符进行缓冲。readLine()方法会在
读取到使用者的换行字符时,再一次将整行字符串传入。
评论区