字符流
字节流在操作中文时(每次只能操作一部分字节),可能出现乱码,这时就需要使用字符流。
GBK : 一个字符两个字节
Unicode,UTF-8:一个中文三个字节
字符串中的编码解码问题
编码
byte[] getBytes()
:使用平台默认字符集将String编码为一系列字节,将结果存储到新的字节数组中。
byte[] getBytes(String charsetName)
:是用指定字符集将String编码为一些列字节,将结果存储到新的字节数组中。
解码
String(byte[] bytes)
:通过平台默认的字符集解码指定的字节数组来构造新的字符串.
String(byte[] bytes, String charsetName)
:通过指定的字符集解码指定的字节数组来构造新的字符串.
字符流写数据
1.创建字符输出流对象
(如果文件不存在就创建,但要保证父级路径存在;如果文件存在就清空)
FileWriter(File file)
给一个File对象构造一个FileWriter对象。
FileWriter(String fileName)
构造一个给定文件名的FileWriter对象。
2.写数据
void write(int c)
:写一个字符
void write(char[] cbuf)
:写出一个字符数组
void write(char[] cbuf,int off, int len)
:写出字符数组的一部分
void write(String str)
:写一个字符串
void write(String str, int off, int len)
:写一个字符串的一部分
3.释放资源
void close()
刷新流
void flush()
字符流读数据
1.创建字符输入流对象
FileReader(File file)
创建一个新的 FileReader ,给出 File读取。
2.创建数组
public int read(char[] cbuf)
FileReader父类的读方法
字符缓冲流
BufferedWrite:
void newLine()
:写一行行分隔符
BufferedReader:
public String readLine()
:读一行文字.不包括任何行终止字符,如果流的结尾已经到达,则为null