public void writeObject(String outFile) {
try {
FileOutputStream fos = new FileOutputStream(outFile);
ObjectOutputStream oos = new ObjectOutputStream(fos);
Student[] copy = this.getStudents();
for (Student st : copy){
oos.writeObject(st);}
oos.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
Код, указанный выше, является функцией, которую я использую для сериализации содержимого моего репозитория, getStudens()
возвращает массив моих данных.Проблемы с сериализацией
public void readSerialized(String fileName) throws Exception {
FileInputStream fis = new FileInputStream(fileName);
ObjectInputStream ois = new ObjectInputStream(fis);
while(fis.available()>0){
ctrl.addC((Student) ois.readObject());}
ois.close();
}
Это моя функция десериализации, которая должна восстановить свои данные и добавить его снова в моей проблеме repository.The в том, что он не воссоздает данные, которые я имел в моем хранилище, когда я сериализовать его первым. Что я имел в хранилище до десериализации:
1 a 4.0 6.0
2 b 10.0 10.0
3 c 2.0 2.0
4 d 8.0 2.0
5 e 6.0 2.0
То, что десериализации возвращается:
0 3.0
0 5.0
ли это означает, что моя функция сериализации не правильно или что-то пойдет не так, когда я десериализации?
Пробовал это, но когда я печатаю на экране снова, он не показывает мне строки 'a',' b' и т. Д., Только числа – Matt
. Думаю, вы пытаетесь напечатать 'String [ ] ', который должен выглядеть примерно так:' [String @ 7ef27456' Это не связано с сериализацией, но факт, что array.toString() довольно бесполезен. Я предлагаю напечатать 'Arrays.toString (копировать)' –
Это означает, что вы можете читать без блокировки. Это может означать два системных вызова вместо одного. – EJP