基本的な保存/開く機能を持つ Java アプリケーションを作成しています。保存する必要があるのは、Singleton であるクラスModeleImageのインスタンスだけです。私の節約は明らかに機能し、次のようになります。
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file));
outputStream.writeObject(ModeleImage.getInstance());
outputStream.flush();
outputStream.close();
今、そのファイルを ObjectInputStream で開こうとしています。シングルトン (ModeleImage) を保存したものに単純に置き換える方法があるかどうかはわかりませんが、現在は各属性をコピーして置き換えるだけです。私のオープニングは次のようになります。
FileInputStream fis = new FileInputStream(fileChooser.getSelectedFile());
ObjectInputStream ois = new ObjectInputStream(fis);
//Get each attribute from the file and set them in my existing ModeleImage Singleton
ModeleImage.getInstance().setImage(((ModeleImage) ois.readObject()).getImage());
ModeleImage.getInstance().setLargeurImage(((ModeleImage) ois.readObject()).getLargeurImage());
ModeleImage.getInstance().setHauteurImage(((ModeleImage) ois.readObject()).getHauteurImage());
ModeleImage.getInstance().setxImage(((ModeleImage) ois.readObject()).getxImage());
ModeleImage.getInstance().setyImage(((ModeleImage) ois.readObject()).getyImage());
また、それぞれに try/catch を配置します。問題は、属性を置き換えようとすると、開始部分が IOException をキャッチすることです。
ModeleImage.getInstance().setImage(((ModeleImage) ois.readObject()).getImage());
//This catches an IOException
私は何を間違っていますか?シングルトンだからですか、それとも ObjectInputStream と readObject() の仕組みを誤解していますか?