Нужна помощь Загрузка и сохранение данных с помощью Serializable - PullRequest
0 голосов
/ 03 апреля 2020

В настоящее время я работаю над системой баз данных отеля, которая называется Database d, которая добавляет пользователей в массив с именем MainDb и добавляет администраторов к другому массиву с именем SecondaryDb. Он также назначает Пользователям в MainDb номер комнаты из массива, называемого «комнаты». В настоящее время у меня есть загрузка и сохранение для работы с ObservableList, но мне нужно получить загрузку и сохранение для работы базы данных. Я думаю, что у меня работает метод сохранения базы данных. Вот метод,

public void saveDb() throws IOException {
        try {
            FileOutputStream fos = new FileOutputStream("TestFile2.ser");
            ObjectOutputStream os = new ObjectOutputStream(fos);
            os.writeObject(d);
            os.close();
        } 
        catch (IOException ex) {
            ex.printStackTrace();
        }
}

Я пытался открыть файл, но его на каком-то языке я не могу расшифровать.

Теперь метод загрузки выглядит следующим образом,

public void loadDb() throws IOException {
        try{
            d.clearDb(); // This empties the MainDb, and SecondaryDb Arraylist, and sets all the rooms
                         // in rooms[] to false
            FileInputStream fis = new FileInputStream("TestFile2.ser");
            BufferedInputStream bis = new BufferedInputStream(fis);
            ObjectInputStream is = new ObjectInputStream(bis);
            Object obj = is.readObject();
            d = (Database) obj;
            System.out.println(d.getUser(0).getUsername());
        }
        catch (IOException | ClassNotFoundException ex){

        }
    }

Я попытался напечатать пользователя в MainDb с помощью d.getUser () с индексом 0 и попытался узнать, какое имя пользователя для них, но он возвращает исключение nullPointerException, и я понятия не имею, почему. Я попытался использовать отладчик в Intellij и заметил это,

enter image description here

Это странно, он правильно загрузил комнаты [] и уровень, но не MainDb или SecondaryDb. Это потому, что он не может преобразовать данные в строку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...