A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘丽娜 中级黑马   /  2012-10-27 14:46  /  1103 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

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

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

2 个回复

倒序浏览
FileReader 有readLine()????
我记得好像是C#有readLine()。。。。{:soso_e132:}
回复 使用道具 举报
同意,我也似乎记得是c#有readLine(),但是还是要谢谢你的总结
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马