为什么需要字符流?
-
由于字节流操作中文不是特别的方便,所以Java就提供字符流
-
字符流 = 字节流+编码表
-
用字节流复制文本文件时,文本文件也会有中文,但是没有问题,因为最终底层操作会自动进行字节拼接成中文,如何识别为中文呢
-
汉字在存储的时候,无论选择哪种编码存储,每个字节转为int时都为负数
字符流中的编码解码问题
字符流抽象基类
-
Reader:字符输入流的抽象类
-
Writer:字符输出流的抽象类
字符流中和编码解码相关的两个类:
-
InputStreamReader
-
OutputStreakWriter
字符流写数据
字符流读数据
字符缓冲流
-
BufferedWriter:将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小,或者可以接受默认大小,默认值足够大,可用于大多数用途
-
BufferedReader:从字符输入流读取文本,缓冲字符,以提供字符、数组和行的高效读取,可以指定缓冲区大小,或者可以接受默认大小,默认值足够大,可用于大多数用途
构造方法:
-
BufferedWriter(Writer out)
-
BufferedReader(Reader in )
特有功能:
BufferedWriter:
-
void nextLine():写一行行分隔符,行分隔符字符串由系统属性定义
BufferedReader:
-
public String readLint():读一行文字,结果包含行的内容的字符串,不包含任何行终止字符,如果流的结尾已经到达,则为null。