Автор оригинала: 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
Рекомендации
Оригинал: “https://mkyong.com/java/how-to-read-and-write-java-object-to-a-file/”