问答详情
源自:4-3 字节流之文件输出流FileOutputStream

关于write()方法的append问题

以下是摘自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()方法不会覆盖之前写入的字节。


提问者:甲壳虫爱上了夏天 2017-04-24 00:35

个回答

  • qq_安居旧巷猫患者_0
    2017-10-21 18:04:23

    我感觉这个参数设置的在创建这个FileOutputStream变量的时候的动作

    append参数的不同会导致是创建新的文件还是在原先的文件末尾添加

    而不会影响后面的write操作

    write操作位置好像是依赖于iterator也就是迭代器的

  • 清冷丶孤雨
    2017-04-24 17:08:45

    这个false是针对之前的文本文件,也就是说,你在一次操作中,覆盖操作是相对于之前的文件。对本次操作是不会覆盖的。