请先看代码:这是IO流中FileWriter类的一种功能测试。给eclipse当前项目目录下的a.txt文件写数据。每一次运行同一个方法进行数据的写入,都会覆盖前面的操作,如下面这段代码,如果每次执行,都会覆盖上一次执行写入的内容,无论执行多少次,a.txt中只有一句话:"hello world!a"。这到底是为什么?
public class FileWriterDemo4 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("a.txt");
fw.write("hello world!");
fw.write('a');
fw.close();
}
}
答案:其实很简单,FileWriter的构造方法是自动创建文件的,如果有同名的文件,会覆盖掉的。也就是说每一次的执行都会生成新的a.txt文件,那么肯定是永远只有一句话了。
怎么解决?请看代码:
public class FileWriterDemo5 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("a.txt",true);//构造方法上加个true的参数。就不会新创建文件,而是在老文件的基础上操作。
fw.write("hello world!");
fw.write('a');
fw.close();
}
}
如果调用上面的构造方法,则append的值默认是false,那么每次都会覆盖,我手动给append赋值为true,那么就会不创建新的文件覆盖掉老文件,而是在老文件的末尾继续写入。
这是两种构造方法的不同的特性。 |
|