Рубрики
Без рубрики

Как читать и записывать объект Java в файл

– Как читать и записывать объект Java в файл

Автор оригинала: Datsabk.

Объект Java Сериализация – это API, предоставляемый стеком библиотек Java в качестве средства сериализации объектов Java. Сериализация – это процесс преобразования объектов в записываемый поток байтов. После преобразования в поток байтов эти объекты могут быть записаны в файл. Обратный процесс этого называется десериализацией.

Объект Java сериализуем, если его класс или любой из его суперклассов реализует либо java.io . Сериализуемый интерфейс или его подинтерфейс, java.io . Экстернализуемый .

1. Объект Java

package com.mkyong;

import java.io.Serializable;

public class Person implements Serializable {

	private static final long serialVersionUID = 1L;
	private String name;
	private int age;
	private String gender;

	Person() {
	};

	Person(String name, int age, String gender) {
		this.name = name;
		this.age = age;
		this.gender = gender;
	}

	@Override
	public String toString() {
		return "Name:" + name + "\nAge: " + age + "\nGender: " + gender;
	}
}

2. Запись и чтение объектов на Java

Объекты могут быть преобразованы в поток байтов с помощью java.io . Поток вывода объекта . Для того, чтобы включить запись объектов в файл с помощью ObjectOutputStream , обязательно, чтобы соответствующий класс реализовывал Сериализуемый интерфейс, как показано в определении класса ниже.

Чтение объектов в Java аналогично записи объекта с использованием ObjectOutputStream ObjectInputStream . Приведенный ниже пример показывает полный цикл записи объектов и чтения объектов в Java.

При чтении объектов ObjectInputStream напрямую пытается отобразить все атрибуты в класс, в который мы пытаемся привести объект чтения. Если он не может точно отобразить соответствующий объект, он создает исключение ClassNotFound .

Давайте теперь разберемся в процессе письма и чтения на примере. Мы используем класс Person , показанный выше, в качестве объекта.

package com.mkyong;

package com.mkyong;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class WriterReader {

	public static void main(String[] args) {

		Person p1 = new Person("John", 30, "Male");
		Person p2 = new Person("Rachel", 25, "Female");

		try {
			FileOutputStream f = new FileOutputStream(new File("myObjects.txt"));
			ObjectOutputStream o = new ObjectOutputStream(f);

			// Write objects to file
			o.writeObject(p1);
			o.writeObject(p2);

			o.close();
			f.close();

			FileInputStream fi = new FileInputStream(new File("myObjects.txt"));
			ObjectInputStream oi = new ObjectInputStream(fi);

			// Read objects
			Person pr1 = (Person) oi.readObject();
			Person pr2 = (Person) oi.readObject();

			System.out.println(pr1.toString());
			System.out.println(pr2.toString());

			oi.close();
			fi.close();

		} catch (FileNotFoundException e) {
			System.out.println("File not found");
		} catch (IOException e) {
			System.out.println("Error initializing stream");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

При выполнении приведенного выше кода мы получаем вывод ниже:

Name:John
Age: 30
Gender: Male
Name:Rachel
Age: 25
Gender: Female

Рекомендации

  1. Сериализация Java-Документов
  2. Документы Java ObjectInputStream
  3. ObjectOutputStream Java Документы

Оригинал: “https://mkyong.com/java/how-to-read-and-write-java-object-to-a-file/”