Проверку сделала - в файл все данные попадают, но валидатор не принимает создание нового объекта потока.
package com.javarush.task.task20.task2022;
import java.io.*;
/*
Переопределение сериализации в потоке
*/
public class Solution implements Serializable, AutoCloseable {
private transient FileOutputStream stream;
private String fileName;
public Solution(String fileName) throws FileNotFoundException {
this.stream = new FileOutputStream(fileName);
this.fileName = 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.writeObject(fileName);
}
public void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
stream = new FileOutputStream((String)in.readObject(), true);
}
@Override
public void close() throws Exception {
System.out.println("Closing everything!");
stream.close();
}
public static void main(String[] args) throws FileNotFoundException, IOException,ClassNotFoundException {
Solution myObject = new Solution("/Users/irynaalymova/Desktop/File2.txt");
myObject.writeObject("data1");
ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteArray);
myObject.writeObject(out);
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(byteArray.toByteArray()));
myObject.readObject(in);
myObject.writeObject("data2");
}
}