字符流:字节流+编码表
编码表(字符集):
字符与数字间对应关系形成的一张表
ASCII: 一个字节数据8个bit
ISO8859-1:不能操作中文
GBK:存储汉字,一个汉字占两个字节
Unicode:java内置的码表,空间浪费,每个字符都占用两个字节,‘\u十六进制数据’
utf-8:国际化的编码,1-3个字节存储数据,汉字占3个字节
解码:将字节到字符的过程
编码:将字符到字节的过程
乱码:使用一个字符集进行编码,使用另外一个字符集进行解码。看到的数据看不懂就是乱码了
字符输出流:
根类:
Writer 抽象类
方法:write(int ch):写一个字符
write(char[]):写一个字符数组
write(String):写一个字符串数据
flush():刷新
close():关闭流,关闭前会刷新
子类对象:FileWriter
字符输入流:
根类:Reader 抽象类
方法:
int read():读取一个字节数据,读取到末尾返回-1
int read(char[] ch) :读取内存存储到ch中,返回读取的字符个数,读取到末尾返回-1
close():关闭流
子类:FileReader
增加小练习:复制文件
字符缓冲流
原理和特点与字节缓冲流基本相同。
目的都是为了提高读写效率。
输入流:
String readLine():读取一行文本,末尾返回null
输出流:
newLine():写一个换行符,是跨平台的
练习:复制文件