public class Solution implements Serializable, AutoCloseable {
    public String line = "a;dfa;f;kajf;kaf;ajf;ajf;ajf;";
    public String fileName;
    transient private FileOutputStream stream;

    public Solution(String fileName) throws FileNotFoundException {
        this.fileName = fileName;
        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.writeObject(line);
        out.writeObject(fileName);

    }

    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
        in.defaultReadObject();
        line =(String) in.readObject();
        stream = new FileOutputStream(fileName, true);


    }

    @Override
    public  void close() throws Exception {
        System.out.println("Closing everything!");
        stream.close();
    }

    public static void main(String[] args) throws Exception {
       Solution sol = new Solution("c:/1.txt");
       sol.writeObject(sol.line);
       sol.close();
       FileOutputStream fileOutputStream = new FileOutputStream("c:/2.bin");
       ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
       objectOutputStream.writeObject(sol);



       FileInputStream fileInputStream = new FileInputStream("c:/2.bin");
       ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
       Solution solution = (Solution)objectInputStream.readObject();
Не могу понять присутствие
stream.write("\n".getBytes());
- как я понимаю он должен переносить строку, а append = true дает мне добавление в конец файла. Как я понимаю после десеарилизации у меня в файле должно быть 2 строки
String line = "a;dfa;f;kajf;kaf;ajf;ajf;ajf;";
а у меня судя по всему перезаписывает т.к. строка одна - это первое. Второе - правильно ли я понял, эта задача похожа на ту, с нитью, где нам нужно продолжить работу нити при десериализации файла? Т. к. Консруктор при десериализации не запускается, тем самым не открывает поток записи в файл строки, то мы в методе readObject запускаем его в ручную строкой
stream = new FileOutputStream(fileName, true);
верно?