1,字符流是什么
-
字符流是可以直接读写字符的IO流
-
字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出.
2,什么情况下使用字符流
-
字符流也可以拷贝文本文件, 但不推荐使用. 因为读取时会把字节转为字符, 写出时还要把字符转回字节.
-
程序需要读取一段文本, 或者需要写出一段文本的时候可以使用字符流
-
读取的时候是按照字符的大小读取的,不会出现半个中文
-
写出的时候可以直接将字符串写出,不用转换为字节数组
3,字符流是否可以拷贝非纯文本的文件
-
不可以拷贝非纯文本的文件
-
因为在读的时候会将字节转换为字符,在转换过程中,可能找不到对应的字符,就会用?代替,写出的时候会将字符转换成字节写出去。如果是?,直接写出,这样写出之后的文件就乱了,看不了了
public static void demo2() throws FileNotFoundException, IOException {
//字符流不能拷贝纯文本的文件
FileReader fr = new FileReader("双元.jpg");
FileWriter fw = new FileWriter("copy.jpg");
int c;
while((c = fr.read()) != -1) {
fw.write(c);
}
fr.close();
fw.close();
}