java IO 字符流(一)FileReader与FileWriter

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就会认为一直在使用,而不进行垃圾回收,那么就会一直占用内存,如果文件过大或者过多,就会浪费资源,并且可能直接导致内存溢出。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值