在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在定义时清空掉了,因而读取的是空文件。
这种情况需要特别注意!!!
|