Не пойму, в чём ошибка. Как правильно проинициализировать поле stream в readObject()? Подскажите, пожалуйста!
package com.javarush.task.task20.task2022;
import java.io.*;
/*
Переопределение сериализации в потоке
*/
public class Solution implements Serializable, AutoCloseable {
private transient FileOutputStream stream;
public Solution(String fileName) throws FileNotFoundException {
this.stream = new FileOutputStream(fileName);
}
public void writeObject(String string) throws IOException {
stream.write(string.getBytes());
stream.write("\n".getBytes());
stream.flush();
}
private void writeObject(ObjectOutputStream out) throws IOException {
out.defaultWriteObject();
// out.close();
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
this.stream = new FileOutputStream("D:\\AkunaMaTata\\outputFile.txt",true);
// in.close();
}
@Override
public void close() throws Exception {
System.out.println("Closing everything!");
stream.close();
}
public static void main(String[] args) throws IOException, ClassNotFoundException {
File myFile = File.createTempFile("D:\\AkunaMaTata\\your_file_name", ".txt");
FileOutputStream fileOutputStream = new FileOutputStream(myFile);
ObjectOutputStream outputStream = new ObjectOutputStream(fileOutputStream);
Solution savedObject = new Solution("D:\\AkunaMaTata\\outputFile.txt");
outputStream.writeObject(savedObject);
FileInputStream fileInputStream = new FileInputStream(myFile);
ObjectInputStream inputStream = new ObjectInputStream(fileInputStream);
Solution loadedObject = (Solution) inputStream.readObject();
// loadedObject.setStream(new FileOutputStream("D:\\AkunaMaTata\\outputFile.txt"));
System.out.println(savedObject);
System.out.println(loadedObject);
}
}