3. 字符输入输出流
转换流其实是一个字符流
字符流 = 字节流 + 编码表
最基本的字符输入输出流:
Reader和Writer是Java用来处理以字符为主的流。
Reader读取文件的方法:
1. int read():
读取一个字符。返回的是读到的那个字符。如果读到流的末尾,返回-1.
2. int read(char[]):
将读到的字符存入指定的数组中,返回的是读到的字符个数,也就是往数组里装的元素的个数。如果读到流的末尾,返回-1.
3. int read(char[], int off, int len):
将将字符读入数组的某一部分,读取的字符数,如果已到达流末尾,则返回 -1
Writer写入文件的方法:
1. write(int ch): 将一个字符写入到流中。
2. write(char[]): 将一个字符数组写入到流中。
3. write(String, int off, int len): 将一个字符串的一部分写入到流中。
4. flush():刷新流,将流中的数据刷新到目的地中,流还存在。
5. close():关闭资源:在关闭前会先调用flush(),刷新流中的数据去目的地。然流关闭。
字符流不适合复制文件。
图像文件是二进制文件,每次读入一个字节,但字符输入输出流对读取进行了编码!
图像文件本来就不需要编码,所以会造成数据的丢失(即数据失真)。