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

请先看代码:这是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,那么就会不创建新的文件覆盖掉老文件,而是在老文件的末尾继续写入。
这是两种构造方法的不同的特性。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马