0.输入字符流(Writer)和输出字符流(Reader)咋区分?
JAVA 中级 / I/O / I/O系列教材 (二)- 什么JAVA 的流 STREAM?
关于输入和输出是以内存为对象的,把内存外部的东西调入内存即为输入,将内存里面的内容储存到硬盘等操作则为输出。
内存和硬盘就好比两个储水的容器,所以要实现里面的内容互换,就必须要管道连接,这就是输入和输出流对象的作用。
输入字符流(Writer)和输出字符流(Reader)咋区分?
就简单的用磁盘和内存来说,以内存为核心。从内存出来的叫输出,进入内存的叫输入。那么从内存中把流输出写入到磁盘上的就是输出字符流,从磁盘上读取数据写入到内存中的就叫输入流。不知这样说是否合理,有问题还望大家多多指教。
1.字符流的由来
提到过用字节流读取中文汉字打印在控制台上,会出现乱码的情况,原因就不赘述了。可见,对于字符的操作,强大如斯的字节流也有失利的时候。这个时候我们本篇的主角—字符流就登上了历史的舞台,展现出它强大的魅力。字符流是建立在字节流之上的,它能够提供字符层次的编码和解码
对于字符的操作,我们当然首选字符流。同时,转换流也为我们建立了字节流到字符流的桥梁,使我们对数据的处理更加灵活。但是也要注意一些细节,对于从转换流获得的字符流,它读取的字符必须在编码表中可以查找的到,否则会造成乱码。对于像图片、视频这样的文件就不适宜用字符流来处理。可以这样形象的理解字符流, 字符流 = 字节流+编码表。
编码将字符数据转化为字节数据,解码将字节数据转化为字符数据。
字符流:就是在字节流的基础上,加上编码,形成的数据流
字符流出现的意义:因为字节流在操作字符时,可能会有中文导致的乱码,所以由字节流引申出了字符流。
2.使用字符流读取文件
FileReader 是Reader子类,以FileReader 为例进行文件读取
3.使用字符流把字符串写入到文件
FileWriter 是Writer的子类,以FileWriter 为例把字符串写入到文件