public class AmigoOutputStream extends FileOutputStream {
    public static String fileName = "/home/vladimir/Downloads/file1";
      private FileOutputStream file;

    public AmigoOutputStream (FileOutputStream file) throws IOException {
      super(fileName);
       this.file = file;
        //   this.file = file;
    }

    @Override
    public void close() throws IOException {
        flush();
       // System.out.println("ddd");
        String str = "JavaRush © All rights reserved.";
      write(str.getBytes());
       file.close();
    }

    @Override
    public void flush () throws IOException {
        file.flush();
    }
    public static void main(String[] args) throws IOException {
     //   new AmigoOutputStream(new FileOutputStream(fileName));
        FileOutputStream dd = new AmigoOutputStream(new FileOutputStream(fileName,true));
        dd.close();
    }

}
У нас создается два обьекта: AmigoOutputStream (dd) и FileOutputStream которые работают с одним файлом. FileOutputStream имеет возможность дописывать в конец файла, AmigoOutputStream - нет. Т.к AmigoOutputStream работает с обьектом FileOutputStream, то возник вопрос: почему фактически работая с FileOutputStream, при вызове AmigoOutputStream.close() запись в конец файла не происходит? После выполнения FileOutputStream.close () в объекте AmigoOutputStream происходит "какая-то магия", которая влияет на закрытие потока и происходит перезапись, а не добавление ?