以下是摘自FileOutputStream的部分源码: public FileOutputStream(File file) throws FileNotFoundException { this(file, false); } public FileOutputStream(File file, boolean append) throws FileNotFoundException{ ... this.append = append; ... } 可以看到创建FileOutput默认append属性为false,即不会追加到文件末尾。 但是。 复制文件的时候有部分代码如下: while ((len = in.read(buf, 0, buf.length)) != -1) { out.write(buf, 0, len); } 为什么这里的write()方法不会覆盖之前写入的字节。
我感觉这个参数设置的在创建这个FileOutputStream变量的时候的动作
append参数的不同会导致是创建新的文件还是在原先的文件末尾添加
而不会影响后面的write操作
write操作位置好像是依赖于iterator也就是迭代器的
这个false是针对之前的文本文件,也就是说,你在一次操作中,覆盖操作是相对于之前的文件。对本次操作是不会覆盖的。