java流_3转换流

来源:互联网 发布:arm linux gcc安装包 编辑:程序博客网 时间:2024/04/25 08:53

  转眼已经开学了一周了,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(newFileInputStream("a.txt"));这两句的代码的意义相同。如果a.txt中的文件中的字符数据是通过utf-8的形式编码。那么在读取时,就必须指定编码表。那么转换流必须使用。

 

 


原创粉丝点击