诞生背景:
字节流对所有的文件操作都是按照一个个二进制位的形式
然而,字节流在操作字符时,可能会有某些字符导致的乱码,所以由字节流引申出了字符流
功能:
把读取到的二进制数据进行对应的编码和解码工作;从而把二进制位转换成程序员期待的字符集
字符流=字节流+编码(解码)
成员结构图 字符输入流 字符输出流 常用的字符流 字符输入流 Reader弊端:
一:无法拷贝图片和视频。
二:拷贝文件使用字节流而不使用字符流,因为字符流读文件涉及到解码,会先解码,写文件的时候又涉及到编码,这些操作多余,而且读和写的码表不对应还容易引发问题。
概述:
用于读取字符流的抽象类。是字符输入流类的祖类。
Reader中有读取字符的三种方法:
InputStreamReader
int read() 读一个字符
int read(char[] cbuf) 将字符读入数组。
abstract int read(char[] cbuf, int off, int len) 将字符读入数组的一部分。
概述:
InputStreamReader是从字节流到字符流的桥梁:它读取字节,并使用指定的charset将其解码为字符。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。
构造方法(常用的):
注意!:传入的是一个字节输入流对象
| InputStreamReader(InputStream in) | 创建一个使用默认字符集的InputStreamReader。 |
|---|---|
| InputStreamReader(InputStream in, String charsetName) | 创建一个使用命名字符集的InputStreamReader。 |
常用方法:
| int | read() | 读一个字符 |
|---|---|---|
| int | read(char[] cbuf, int offset, int length) | 将字符读入数组的一部分。 |
概述:
继承自InputStreamReader,FileReader 可以把FileInputStream中的字节数据转成根据字符编码方式转成字符数据流。在字符缓冲流的构造方法中有使用到。
构造方法:
| FileReader(File file) | 创建一个新的 FileReader ,给出 File读取。 |
|---|---|
| FileReader(String fileName) | 创建一个新的 FileReader ,给定要读取的文件的名称。 |
特有方法:
继承了父类中的方法没有特有的方法。
BufferedReader概述:
从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途。
构造方法:
| BufferedReader(Reader in) | 创建使用默认大小的输入缓冲区的缓冲字符输入流。 |
|---|---|
| BufferedReader(Reader in, int sz) | 创建使用指定大小的输入缓冲区的缓冲字符输入流。 |
特有方法:
| String | readLine() | 读一行文字。 |
|---|
概述:
用于写入字符流的抽象类。是所有字符输出流的祖类。
Writer中定义了写入字符的五种方法:
| void | write(int c) | 写一个字符 |
|---|---|---|
| void | write(String str) | 写一个字符串 |
| void | write(String str, int off, int len) | 写一个字符串的一部分。 |
| void | write(char[] cbuf) | 写入一个字符数组。 |
| abstract void | write(char[] cbuf, int off, int len) | 写入字符数组的一部分。 |
还有用于刷写的flush() 方法。
OutputStreamWriter概述:
OutputStreamWriter是从字符流到字节流的桥梁:使用指定的charset将写入的字符编码为字节。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。
构造方法:
注!:这里需要传入一个字节输出流。
| OutputStreamWriter(OutputStream out) | 创建一个使用默认字符编码的OutputStreamWriter。 |
|---|---|
| OutputStreamWriter(OutputStream out, String charsetName) | 创建一个使用命名字符集的OutputStreamWriter。 |
概述:
继承自OutputStreamReader,FileWriter 可以把FileOutputStream中的字节数据转成根据字符编码方式转成字符数据流。在字符缓冲流的构造方法中有使用到。
构造方法:
| FileWriter(File file) | 给一个File对象构造一个FileWriter对象。 |
|---|---|
| FileWriter(String fileName) | 构造一个给定文件名的FileWriter对象。 |
概述:
将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。可以指定缓冲区大小,或者可以接受默认大小。 默认值足够大,可用于大多数用途。
构造方法:
| BufferedWriter(Writer out) | 创建使用默认大小的输出缓冲区的缓冲字符输出流。 |
|---|---|
| BufferedWriter(Writer out, int sz) | 创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。 |
特有方法:
| void | newline() | 写一行行分隔符。 |
|---|



