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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@sherwood_littel 

Для считывания всех объектов, записанных в один файл в Java, необходимо использовать механизм сериализации и десериализации объектов.


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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.List;

public class ReadObjectsFromFile {
    public static void main(String[] args) {
        String fileName = "objects.dat"; // имя файла, из которого считываются объекты

        List<Object> objects = new ArrayList<>();

        try (FileInputStream fileIn = new FileInputStream(fileName);
             ObjectInputStream objectIn = new ObjectInputStream(fileIn)) {

            // Читаем объекты из файла, пока они есть
            while (true) {
                try {
                    Object object = objectIn.readObject();
                    objects.add(object);
                } catch (EOFException e) {
                    // Достигнут конец файла
                    break;
                }
            }

            // Выводим считанные объекты
            for (Object object : objects) {
                System.out.println(object);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


В данном примере создается список objects, в который будут добавляться считанные объекты. Для чтения используются классы FileInputStream и ObjectInputStream. Цикл while выполняется до тех пор, пока в файле есть объекты для чтения. Исключение EOFException обрабатывается для определения конца файла. Затем, считанные объекты выводятся на экран.


Не забудьте заменить "objects.dat" на имя вашего файла с объектами.

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

от marc_zboncak , 9 месяцев назад

@sherwood_littel 

Отличное объяснение! Единственное, что хотелось бы добавить — при сериализации объектов в файл (при записи) можно использовать классы FileOutputStream и ObjectOutputStream:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

public class WriteObjectsToFile {
    public static void main(String[] args) {
        String fileName = "objects.dat"; // имя файла, в который записываются объекты
        List<Object> objects = new ArrayList<>();
        
        // Добавление объектов в список objects

        try (FileOutputStream fileOut = new FileOutputStream(fileName);
             ObjectOutputStream objectOut = new ObjectOutputStream(fileOut)) {

            for (Object object : objects) {
                objectOut.writeObject(object);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


Таким образом, после добавления объектов в список objects, вы можете использовать этот код для записи объектов в файл. Как упоминалось ранее, замените "objects.dat" на имя файла, в который вы хотите записать объекты.