Запись объекта в файл в Java

Java предоставляет возможность записи объекта в файл для того, чтобы потом его можно было использовать. Это процесс называется сериализацией. Для того, чтобы объект можно было записать в файл, он должен реализовывать интерфейс Serializable, а для записи объекта в файл используется класс ObjectOutputStream. Упрощенно процедура записи объекта в файл выглядит следующим образом:

// Создаем объект. Класс Address должен реализовывать интерфейс Serializable
Address myAddress = new Address();
// Создаем объект FileOutputStream для доступа к файлу
FileOutputStream fout = new FileOutputStream("c:\address.ser");
// Создаем объект ObjectOutputStream для работы с объектами
ObjectOutputStream oos = new ObjectOutputStream(fout);
// Записываем объект в файл
oos.writeObject(myAddress);

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

Класс, объекты которого буду записаны в файл:

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();
    }
}

Класс программы, использующей объекты типа Address:

package ru.j4web.examples.java.io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;

public class WriteObjectToFileExample {

    private static final String DIRECTORY = "c:\Projects\J4Web.Ru\Src\"
            + "JavaIO\WriteObjectToFileExample\";
    
    public static void main(String[] args) {
        try {
            final Address myAddress = new Address("Russia", "Moscow",
                    "Tverskaya");
            final FileOutputStream fos = new FileOutputStream(DIRECTORY
                    + "address.ser");
            final ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(myAddress);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(WriteObjectToFileExample.class.getName())
                    .log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(WriteObjectToFileExample.class.getName())
                    .log(Level.SEVERE, null, ex);
        }
    }
}

В результате работы этой программы будет создан файл «address.ser», в котором находится сериализованная версия объекта myAddress. Посмотреть содержимое этого файла штатными текстовыми редакторами не получится, так как там хранятся бинарные данные.

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

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

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

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

*