В настоящее время я работаю над системой баз данных отеля, которая называется 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](https://i.stack.imgur.com/9uu3X.png)
Это странно, он правильно загрузил комнаты [] и уровень, но не MainDb или SecondaryDb. Это потому, что он не может преобразовать данные в строку?