转眼已经开学了一周了,
Java流也学了好几天了,每天都有不同的感受,感觉这东西真的很神奇,越学就觉得它很强大,只是小小的几行代码,就能有许多不同的效果。。。
学习
Java流,要在脑子里印上它的各种关系模式图,只有这样,才能够熟练掌握它,这几天也一直看这个关系图,刚开始看的时候感觉应该没有多么的难懂,可是真正看了之后才觉得它很深奥。。。今天学的转换流,大概就是字节流和字符流之间的转换桥梁,
FileReader:专门用于处理文件的字符流读取对象,
FileWriter:专门用于处理文件的字符写入流对象。当字节和字符之间有转换动作时,和流数据的数据进行编码表的指定时;具体的体现是
InputStreamReader是字节到字符的桥梁,
OutputStreamWriter是字符到字节的桥梁,这两个流对象是字符流体系中的成员;那么他们有转换作用,而本身又是字符流,所以在构造的时候,需要传入字节流对象进来。转换流中的
read方法。已经融入了编码表,
    在底层调用字节流的
read方法时将获取的一个或者多个字节数据进行临时存储,
    并去查指定的编码表,如果编码表没有指定,
    查的是默认码表。那么转流流的
read方法就可以返回一个字符比如中文。
   
    转换流已经完成了编码转换的动作,对于直接操作的文本文件的
FileReaer而言,就不用在重新定义了,
    只要继承该转换流,获取其方法,就可以直接操作文本文件中的字符数据了。在使用
FileReader操作文本数据时,该对象使用的是默认的编码表。
    如果要使用指定编码表时,必须使用转换流。
FileReader fr = new FileReader("a.txt");//操作
a.txt的中的数据使用的本系统默认的
GBK。操作
a.txt的中的数据使用的也是本系统默认的
GBK
InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"));这两句的代码的意义相同。如果
a.txt中的文件中的字符数据是通过
utf-8的形式编码。那么在读取时,就必须指定编码表。那么转换流必须使用。