Исключение класса При чтении списка сохраненных массивов (объектов) из файла - PullRequest
0 голосов
/ 20 октября 2019

Я хочу фактически прочитать данные из файла в список массивов класса Flight_registrie. Я могу сохранить список массивов в файле, но когда я пытаюсь прочитать из файла, он не работает и дает исключение приведения класса. Я также пытался получить значения в списке массивов напрямую, но это не сработало. Можете ли вы сказать мне, что я должен написать, чтобы прочитать данные из файла в список массивов?

try {
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(" Flight Registrie.bin"));

    Flight_registrie b =(Flight_registrie) ois.readObject();
    alr.add(b);
    ois.close();
} catch (FileNotFoundException e) {
    System.out.println("\t\t\tFile not Found.");    
} catch (IOException e) {
    System.out.println("An I/O error occurs");
} catch (ClassNotFoundException e) {
    System.out.println("\t\tClass Flight_registrie not found ");
}

и ниже код, как я взял ввод.

try {al.add(a);
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(" Flight Registrie.bin"));
    oos.writeObject(al);
    System.out.println("Data Saved");
    al.clear();
oos.close();
} catch (IOException e) {
System.out.println("An I/O error occurs");
}

Ошибка:

 Exception in thread "main" java.lang.ClassCastException: class
java.util.ArrayList cannot be cast to class
source__module.Flight_registrie (java.util.ArrayList is in module
java.base of loader 'bootstrap'; source__module.Flight_registrie is in
unnamed module of loader 'app')
    at source__module.Functions.get_data(Functions.java:64)
    at file.Launcher.main(Launcher.java:41)

1 Ответ

0 голосов
/ 20 октября 2019

Похоже, вы сохраняете список в вашем файле. Но во время чтения вы пытаетесь прочитать список в Flight_registrie.

Это идентификатор, почему появляется ошибка, когда вы пытаетесь привести объект ArrayList к объекту класса Flight_registrie. Неисправная строка:

 Flight_registrie b =(Flight_registrie) ois.readObject();

Попробуйте изменить это на:

List<Flight_registrie> b =(List<Flight_registrie>) ois.readObject();

И это должно решить проблему.

...