关于write()方法的append问题

来源:4-3 字节流之文件输出流FileOutputStream

甲壳虫爱上了夏天

2017-04-24 00:35

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


写回答 关注

2回答

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

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

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

    而不会影响后面的write操作

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

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

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

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题