//Now it was the Preparation Day of the Passover, at about the sixth hour. He said to the Jews, "Behold, your King!" (John 19:14) package com.javarush.task.task20.task2022; import java.io.*; /* ÐеÑеопÑеделение ÑеÑиализаÑии в поÑоке */ public class Solution implements Serializable, AutoCloseable { transient private 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.defaultWriteObject(); } private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); 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 IOException, ClassNotFoundException { Solution solution = new Solution("e:\\shalom.txt"); solution.writeObject("Shalom!\r\n"); ObjectOutputStream oos= new ObjectOutputStream(new FileOutputStream("e:\\solution.obj")); oos.writeObject(solution); ObjectInputStream ois = new ObjectInputStream((new FileInputStream("e:\\solution.obj"))); Solution solution2 = (Solution) ois.readObject(); solution2.writeObject("Shalom again!"); } } /* ÐеÑеопÑеделение ÑеÑиализаÑии в поÑоке СеÑиализаÑиÑ/деÑеÑиализаÑÐ¸Ñ Solution не ÑабоÑаеÑ. ÐÑпÑÐ°Ð²Ñ Ð¾Ñибки не менÑÑ ÑигнаÑÑÑÑ Ð¼ÐµÑодов и клаÑÑа. ÐеÑод main не ÑÑаÑÑвÑÐµÑ Ð² ÑеÑÑиÑовании. ÐапиÑаÑÑ ÐºÐ¾Ð´ пÑовеÑки ÑамоÑÑоÑÑелÑно в меÑоде main: 1) ÑоздаÑÑ ÑкземплÑÑ ÐºÐ»Ð°ÑÑа Solution 2) запиÑаÑÑ Ð² него даннÑе â writeObject 3) ÑеÑиализоваÑÑ ÐºÐ»Ð°ÑÑ Solution â writeObject(ObjectOutputStream out) 4) деÑеÑиализоваÑÑ, полÑÑаем новÑй обÑÐµÐºÑ 5) запиÑаÑÑ Ð² новÑй обÑÐµÐºÑ Ð´Ð°Ð½Ð½Ñе â writeObject 6) пÑовеÑиÑÑ, ÑÑо в Ñайле еÑÑÑ Ð´Ð°Ð½Ð½Ñе из п.2 и п.5 ТÑебованиÑ: 1.âÐоле stream должно бÑÑÑ Ð¾Ð±ÑÑвлено Ñ Ð¼Ð¾Ð´Ð¸ÑикаÑоÑом transient. 2.âРмеÑоде writeObject(ObjectOutputStream out) не должен бÑÑÑ Ð²Ñзван меÑод close Ñ Ð¿Ð¾Ñока полÑÑенного в каÑеÑÑве паÑамеÑÑа. 3.âРмеÑоде readObject(ObjectInputStream in) не должен бÑÑÑ Ð²Ñзван меÑод close Ñ Ð¿Ð¾Ñока полÑÑенного в каÑеÑÑве паÑамеÑÑа. 4.âРмеÑоде readObject(ObjectInputStream in) поле stream должно бÑÑÑ Ð¸Ð½Ð¸ÑиализиÑовано новÑм обÑекÑом Ñипа FileOutputStream Ñ Ð¿Ð°ÑамеÑÑами(fileName, true). 5.âРконÑÑÑÑкÑоÑе клаÑÑа Solution поле stream должно бÑÑÑ Ð¸Ð½Ð¸ÑиализиÑовано новÑм обÑекÑом Ñипа FileOutputStream Ñ Ð¿Ð°ÑамеÑÑом(fileName). package com.javarush.task.task20.task2022; import java.io.*; * ÐеÑеопÑеделение ÑеÑиализаÑии в поÑоке * public class Solution implements Serializable, AutoCloseable { private 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(); in.close(); } @Override public void close() throws Exception { System.out.println("Closing everything!"); stream.close(); } public static void main(String[] args) { } } */