Чтение и запись объектов в Java
Сериализация - это преобразование объекта в последовательность байтов, чтобы объект можно было легко сохранить в постоянном хранилище или потоковом потоке даже на другой платформе или в сети. Затем один и тот же поток байтов можно десериализовать - преобразовать в реплику исходного объекта. Поскольку создание потока байтов является нейтральным по отношению к платформе, как только объекты, созданные в одной системе, могут быть десериализованы на другой платформе. Это очень полезно, когда вы хотите передать данные одного объекта по сети, например, с одной JVM на другую. Здесь, в Java, механизм сериализации встроен в платформу, но вам необходимо реализовать интерфейс Serializable, чтобы сделать объект сериализуемым.
Пример
import Java.io.*;
class Student implements Java.io.Serializable{
int ID;
String Name;
Student(int ID, String Name){
this.ID = ID;
this.Name=Name;
}
}
Как читать и записывать объекты Java из / в файл?
ObjectOutputStream используется для сериализации и записи в файл, в то время как ObjectInputStream может использоваться аналогичным образом для чтения сериализованных объектов из файла
Пример
import Java.util.*;
import Java.io.*;
class Student implements Java.io.Serializable {
int ID;
String Name;
Student(int ID, String Name){
this.ID = ID;
this.Name=Name;
}
public String toString() {
return "ID:" + ID + "\nName: " + Name;
}
}
public class TestClass{
public static void main(String[] args) {
Student st1 = new Student(100, "Bill");
Student st2 = new Student(101, "Gates");
// запись объекта в файл
try {
FileOutputStream fos = new FileOutputStream(new File("D:\\JavaObjects.txt"));
ObjectOutputStream oos = new ObjectOutputStream(fos);
// Запись объектов в файл
oos.writeObject(st1);
oos.writeObject(st2);
oos.close();
fos.close();
}
catch (IOException e){
e.printStackTrace();
}
// Чтение объектов из файла
try{
FileInputStream fis = new FileInputStream(new File("D:\\JavaObjects.txt"));
ObjectInputStream ois = new ObjectInputStream(fis);
Student s1 = (Student) ois.readObject();
Student s2 = (Student) ois.readObject();
System.out.println(s1.toString());
System.out.println(s2.toString());
fis.close();
ois.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
