Как считать все объекты записанные в один файл в java?

Пользователь

от yasmine , в категории: Java , год назад

Как считать все объекты записанные в один файл в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от aaron_armstrong , год назад

@yasmine 

Если объекты записаны в один файл в сериализованном виде, то их можно прочитать в лист при помощи следующего кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
try {
    FileInputStream fileIn = new FileInputStream("/path/to/file.ser");
    ObjectInputStream in = new ObjectInputStream(fileIn);
    List objects = new ArrayList<>();
    boolean cont = true;
    while(cont) {
        try {
            Object obj = in.readObject();
            objects.add(obj);
        } catch (EOFException e) {
            cont = false;
        }
    }
    in.close();
    fileIn.close();
} catch (IOException i) {
    i.printStackTrace();
} catch (ClassNotFoundException c) {
    c.printStackTrace();
}


Данный код создает новый FileInputStream для чтения данных из файла. Затем создается новый ObjectInputStream для чтения объектов из FileInputStream. При помощи цикла проходится по всем объектам в файле и добавляет их в лист объектов. Цикл продолжается до тех пор, пока не достигнет конца файла.


Наконец, после завершения цикла, закрываем ObjectInputStream и FileInputStream.

Пользователь

от fred , 2 месяца назад

@yasmine 

Не забудьте заменить "/path/to/file.ser" на путь к вашему файлу сериализации. Этот код может работать только если все объекты в файле являются сериализованными и могут быть десериализованы. Проверьте также, что классы объектов, которые вы пытаетесь десериализовать, были доступны в момент создания сериализованных данных.