字符编码
前言:
当我们使用字节流来读取文件的时候,如果文件里全是英文,我们可以正常读取出来,但是要是变成了中文,我们在读取的时候就出现乱码,这是因为字符编码不同造成的,因为之前我们是的字节流是一个一个字节来读取,中文不是一个汉字占一个字节,在UTF-8中一个中文汉字是占3个字节,你一次读一个字节,难道把一个汉字拆分成3份来读取吗?所以我们不能用字节流来读取中文文件了。
字符流
先来看看字符流的父类(抽象类)
Reader :字符输入流
public int read(){ } |
public int read(char[ ] c){ } |
public int read(char[ ] b,int off,int len){ } |
Writer :字符输出流
public void write(int n){ } |
public void write(String str){ } |
public void write(char[ ] c){ } |
字符流读取:Filereader
我们先一个一个字符读,注意是字符了哈,不是字节了,一个字符可以等于多个字节
我们再多个字符一起读
字符流写入:Filewriter
实例:实现文件的复制
字符流:复制文本文件
FileReader和FileWriter 只能复制文本文件,不能复制图片和二进制文件。只能使用字节流来复制任意文件,因为所有的文件、数据都是以二进制的形式存储的
字符缓冲流 请看这里