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

本文介绍了Java中使用FileWriter进行文件读写的两种不同方式:一种是从文件头开始写入并覆盖原有内容,另一种则是在原有内容基础上追加新内容。同时,通过一个常见错误示例说明了在实际操作过程中需要注意的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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在定义时清空掉了,因而读取的是空文件。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值