Чтение объекта из файла в Java

В предыдущем примере было показано, как записать Java объект в файл. Настало время узнать, как прочитать Java объект из файла.

Процесс восстановления состояния сохраненного объекта из файла называется десериализацией. Упрощенно процедура десериализации объекта выглядит следующим образом:

// Создаем объект FileInputStream для доступа к файлу
FileInputStream fin = new FileInputStream("c:\address.ser");
// Создаем объект ObjectInputStream для чтения сериализованного объекта
ObjectInputStream ois = new ObjectInputStream(fin);
// Восстанавливаем состояние объекта из файла
Address myAddress = (Address) ois.readObject();

Пример записи объекта в файл

package ru.j4web.examples.java.io;

import java.io.Serializable;

public class Address implements Serializable {
    
    private String country;
    private String city;
    private String street;
    
    public Address() {
    }
    
    public Address(final String country, final String city,
            final String street) {
        this.country = country;
        this.city = city;
        this.street = street;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    @Override
    public String toString() {
        return new StringBuilder().append("Country: ").append(country)
                .append("; City: ").append(city).append("; Street: ")
                .append(street).append(";").toString();
    }
}
package ru.j4web.examples.java.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ReadObjectFromFileExample {

    private static final String FILENAME = "c:\Projects\J4Web.Ru\Src\"
            + "JavaIO\WriteObjectToFileExample\address.ser";

    public static void main(String[] args) {
        try (FileInputStream fin = new FileInputStream(FILENAME)){
            ObjectInputStream ois = new ObjectInputStream(fin);
            Address myAddress = (Address) ois.readObject();
            System.out.println(myAddress);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(ReadObjectFromFileExample.class.getName())
                    .log(Level.SEVERE, null, ex);
        } catch (IOException | ClassNotFoundException ex) {
            Logger.getLogger(ReadObjectFromFileExample.class.getName())
                    .log(Level.SEVERE, null, ex);
        }
    }
}
Country: Russia; City: Moscow; Street: Tverskaya;

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

Полезная информация

Оставить комментарий

Ваш email нигде не будет показанОбязательные для заполнения поля помечены *

*