Дважды выполняется метод close (FileInputStre

264
22 августа 2017, 12:11
public class AmigoOutputStream extends FileOutputStream {
public static String fileName = "D:/tmp/result.txt";
private FileOutputStream original = null;

public AmigoOutputStream(FileOutputStream fileOutputStream) throws Exception {
    super(fileOutputStream.getFD());
    this.original = fileOutputStream;
}
@Override
public void write(int b) throws IOException {
    original.write(b);
}
@Override
public void write(byte[] b) throws IOException {
    original.write(b);
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
    original.write(b, off, len);
}
@Override
public void close() throws IOException {
    original.flush();
    original.write("JavaRush © All rights reserved.".getBytes());
    original.close();
}
@Override
public void flush() throws IOException {
    original.flush();
}
public static void main(String[] args) throws Exception {
    AmigoOutputStream amigoOutputStream = new AmigoOutputStream(new FileOutputStream(fileName));
    amigoOutputStream.close();
}

Это содержание выходного файла:

JavaRush © All rights reserved.JavaRush © All rights reserved.

Похоже, метод close выполняется дважды, проверено отладчиком. Почему так?

Answer 1

Мне кажется вы слишком усложнили решение, не уверен в чем же конкретно было дело, но по крайней мере так оно работает как надо:

public class AmigoOutputStream extends FileOutputStream {
    public AmigoOutputStream(String fileName) throws Exception {
        super(fileName);
    }
    @Override
    public void close() throws IOException {
        super.write("JavaRush © All rights reserved.".getBytes());
        super.flush();
        super.close();
    }
    public static void main(String[] args) throws Exception {
        AmigoOutputStream amigoOutputStream = new AmigoOutputStream("result.txt");
        amigoOutputStream.close();
    }
}
READ ALSO
Перенос jar-приложения в war

Перенос jar-приложения в war

Мне нужно реализовать редактирование properties и вывод логов на веб-страницу

256
Редактирование TableView

Редактирование TableView

Хочу сделать так, чтобы можно было редактировать данные прямо в таблицеНо при вызове методы setOnEditCommit для обоих столбцов пишет: неверный параметр...

337
Ошибка при запуске Spring Boot приложения

Ошибка при запуске Spring Boot приложения

Пытайюсь задеплоить приложение Spring Boot на PayaraВот что получаеться в итоге:

496
не добавляются записи в базу данных

не добавляются записи в базу данных

Добавляю записи в бд таким образом:

284