Делегируя отношение с помощью поля outputStream, например, в методе close(), если я правильно все понял, то закроется файл, который указан в fileName ну и перед закрытием выполнится код, до вызова родительского close(). А если вызвать родительский close() с помощью super, то что-то изменится или нет?
public class AmigoOutputStream extends FileOutputStream {
public static String fileName = "C:fileName1.txt";
FileOutputStream outputStream;
AmigoOutputStream(FileOutputStream outputStream) throws IOException {
super(fileName);
this.outputStream = outputStream;
}
@Override
public void write(byte[] b) throws IOException {
outputStream.write(b);
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
outputStream.write(b, off, len);
}
@Override
public void flush() throws IOException {
outputStream.flush();
}
@Override
public void write(int b) throws IOException {
outputStream.write(b);
}
@Override
public void close() throws IOException {
outputStream.flush();
String string = "JavaRush © All rights reserved.";
outputStream.write(string.getBytes());
outputStream.close();
}
public static void main(String[] args) throws FileNotFoundException, IOException {
String string = "dsfa";
AmigoOutputStream f = new AmigoOutputStream(new FileOutputStream(fileName));
f.write(string.getBytes());
//f.close();
}
}