Мне нужно прочитать ранее сохраненные объекты из разных входных и выходных потоков из двух отдельных классов списка моделей.
Я искал на этом сайте большую часть дня.Похоже, что есть информация о сериализации, но я не смог найти ничего подходящего для моей конкретной проблемы.
У меня есть два класса списка моделей, FlashCardList и UserList.Я перенес все содержимое этих классов в два объекта ArrayLists.У меня есть файл для моего FlashCardList и второй файл для моего UserList.
При чтении и записи в каждый файл я создаю новый новый FileInputStream, новый FileOutputStream, новый ObjectInputStream и новый ObjectOutputStream.
Я пытался: добавление serialVersionUID в мои классы FlashCard и User.Использование циклов for loop / while для чтения и чтения до конца файла при добавлении каждого объекта обратно в исходный ArrrayList (без кубиков).Приведение ObjectInputStream как ArrayList вместо объекта.Очистка ObjectOutputStream.Использование абсолютного пути к файлу при создании FileInputStream.Использование разных выходных и входных потоков для каждого списка моделей.Убедитесь, что все соответствующие классы реализуют интерфейс Serializable.Поговорил с репетитором для лучшего понимания, но он также не знал, что случилось с моей программой.Плач.
public SerializeModelClasses() {
this.flashCardList = new FlashCardList();
this.userList = new UserList();
this.listOfFlashCardsFileName = new File("src/listOfFlashCards.ser");
this.listOfFlashCards = new ArrayList(flashCardList.getFlashCards());
this.listOfUsers = new ArrayList(userList.getUserArrayList());
this.listOfUsersFileName = new File("src/listOfUsers.ser");
HelloHelloWhereAREYOUFILE();
flashCardListSerialization();
userListSerialization();
}
public void readFlashCardListFile() {
try {
fis = new FileInputStream(listOfFlashCardsFileName);
in = new ObjectInputStream(fis);
listOfFlashCards.add((FlashCard) in.readObject());
listOfFlashCards.add((FlashCard) in.readObject());
listOfFlashCards.add((FlashCard) in.readObject());
while (true) {
FlashCard temp = (FlashCard) in.readObject();
this.listOfFlashCards.add(temp);
}
} catch (EOFException e) {
e.getMessage();
} catch (IOException e) {
e.getMessage();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} finally {
try {
in.close();
} catch (IOException ex) {
Logger.getLogger(SerializeModelClasses.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public void writeFlashCardListFileRetry() {
System.out.println("Writing objects to FlashCard File");
for (int i = 0; i < listOfFlashCards.size(); i++) {
try {
fos = new FileOutputStream(listOfFlashCardsFileName.getAbsoluteFile(), true);
oos = new ObjectOutputStream(fos);
oos.writeObject(listOfFlashCards.get(i));
oos.flush();
} catch (FileNotFoundException ex) {
Logger.getLogger(SerializeModelClasses.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(SerializeModelClasses.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public void readUserListFile() {
try {
fis = new FileInputStream(listOfUsersFileName.getAbsoluteFile());
in = new ObjectInputStream(fis);
User temp = (User) in.readObject();
this.listOfUsers.add(temp);
System.out.println("Reading Users from the User File");
for (int i = 0; i < listOfUsers.size(); i++) {
User currentUser = (User) listOfUsers.get(i);
System.out.println(currentUser.getUserName());
System.out.println(currentUser.getUserPassword());
}
if (!listOfUsers.isEmpty()) {
System.out.println("There are users in the user list");
}
in.close();
} catch (EOFException e) {
e.getMessage();
} catch (IOException e) {
e.getMessage();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}
public void writeUserListFile() {
System.out.println("Writing objects to List of Users to the File");
for (int i = 0; i < listOfUsers.size(); i++) {
try {
fos = new FileOutputStream(listOfUsersFileName.getAbsoluteFile(), true);
oos = new ObjectOutputStream(fos);
oos.writeObject(listOfUsers.get(i));
oos.flush();
} catch (FileNotFoundException ex) {
Logger.getLogger(SerializeModelClasses.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(SerializeModelClasses.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Я также хочу знать, должен ли мой файл .ser выглядеть таким нечитаемым?
Изображение моего файла .ser для моих flashCards
Спасибо за любую помощь в изучении сериализации!