以下是摘自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是针对之前的文本文件,也就是说,你在一次操作中,覆盖操作是相对于之前的文件。对本次操作是不会覆盖的。