Я делаю Java-приложение с базовыми возможностями сохранения / открытия. Все, что мне нужно сохранить, это экземпляр моего класса ModeleImage , который является Singleton. Мое сохранение, по-видимому, работает и выглядит так:
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file));
outputStream.writeObject(ModeleImage.getInstance());
outputStream.flush();
outputStream.close();
Теперь я пытаюсь открыть этот файл с помощью ObjectInputStream. Я не уверен, есть ли способ просто заменить мой Singleton (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
Что я делаю не так?
Это потому, что это Singleton или я неправильно понимаю, как работают ObjectInputStream и readObject ()?