文件输入输出流中需要特别注意的一点

在JAVA中,FileInputStream,FileOutputStream,FileReader,FileWriter等类可以实现对文件的读写,读写的方式也可根据程序员需要而设定。一般来说,一个这样的IO对象在其生命周期内支持连续的写入,有些还能支持多次写入(对象流除外)。这里的多次写入是指每次写同一个文件的对象不一样,但文件的内容不是每次都从0开始,而是可以从文件原有的基础之上写入。如:

(情况一)

FileWriter out = new FileWriter(fileName);

out.write();

out.flush();

这里的写入每次都从0开始。

(情况二)

FileWriter out = new FileWriter(fileName,true);   //比上面多了一个布尔参数,表示从文件原有的基础之上进行写入

out.write();

out.flush();

上面两种情况除了在效果上不同外,其执行方面也有点不同,需要特别注意:

(情况一)中

FileWriter out = new FileWriter(fileName);后就将fileName文件清空,下面的操作完全从0开始;

而 (情况二)便没有些操作。

说了这么多,就是想提醒各位读者,一定要注意Writer是在什么情况,什么条件,或者说是哪个时间将文件清空的。

但这又有什么用呢?

没有用,但可以让你少犯错。如出现以下情况就很难发现了:

FileReader in = new FileReader(fileName);

FileWriter out = new FileWriter(fileName);

System.out.println(in.readLine());   //结果为null

out.write("hello");

out.flush();

上面的结果之后以为空是因为in读出前文件已经被out在定义时清空掉了,因而读取的是空文件。

这种情况需要特别注意!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值