您的位置:首页 > 编程语言 > Java开发

java IO 字符流(一)FileReader与FileWriter

2018-01-08 16:26 731 查看
java字符流主要用于文本数据的操作,根据流向又可以分为输入流与输出流,从java IO的类总结图中可以看到java字符流的两个大的抽象类为:Reader与Writer,其他都是他们俩的子类,基本都是成对出现的,一个负责输入,一个负责输出。

本篇主要总结一下FileReader与FileWriter。

一、FileReader

流向为操作对象到内存,所以为输入流。构造方法有三个,常用的有两个,继承自InputStreamReader。



源码中FileReader只有三个构造方法,所以调用FileReader的方法其实都是继承自InputStreamReader。经常用来读取文本中的内容,基本单位为char。



按照字符数组去读取,如果读完了整个文本,则返回-1,所以用-1来判断是否到达尾端。

2.FileWriter

与Writer相反,流向为内存到对象,输出流。继承自OutPutStreamReader,构造方法有五个常用的有四个,比这FileReader多了一个Boolean的参数,来确定是否在原来的文档追加,还是把原来的内容清掉再写入。



上图是去掉注释的源码。



需要注意的是构造方法中的是否追加参数,还有就是writer的write并没有将数据直接写进文件而是保存在缓冲区,flush方法才是将缓冲去的数据写入到文本。

3.总结

操作的最后都要将流关闭,并且关闭流的操作要写在finally中,因为如果将数据转换为流,存储在内存中,然后进行处理,如果使用过后没有关闭,那么java就会认为一直在使用,而不进行垃圾回收,那么就会一直占用内存,如果文件过大或者过多,就会浪费资源,并且可能直接导致内存溢出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐