В этом примере показано, как использовать ObjectOutputStream
для записи объектов в файл на Java, akka Сериализация .
public static void writeObjectToFile(Person obj, File file) throws IOException { try (FileOutputStream fos = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fos)) { oos.writeObject(obj); oos.flush(); } }
Примечание Больше Примеры сериализации и десериализации Java
1. Объект Java
Мы можем сериализовать или упорядочить объект, который реализует Сериализуемый
интерфейс.
package com.mkyong.io.object; import java.io.Serializable; import java.math.BigDecimal; public class Person implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; // if transient, JVM ignore this field for serialization private transient BigDecimal salary; public Person(String name, int age, BigDecimal salary) { this.name = name; this.age = age; this.salary = salary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public BigDecimal getSalary() { return salary; } public void setSalary(BigDecimal salary) { this.salary = salary; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", salary=" + salary + '}'; } }
2. Записать объект в файл
В приведенном ниже примере объект Person
будет записан в файл с именем person.bin
.
package com.mkyong.io.object; import java.io.*; import java.math.BigDecimal; public class HelloSerializationFile { public static void main(String[] args) throws IOException, ClassNotFoundException { Person person = new Person("mkyong", 50, new BigDecimal(1000)); File file = new File("person.bin"); writeObjectToFile(person, file); Person p = readObjectFromFile(file); System.out.println(p); } // Serialization // Save object into a file. public static void writeObjectToFile(Person obj, File file) throws IOException { try (FileOutputStream fos = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fos)) { oos.writeObject(obj); oos.flush(); } } // Deserialization // Get object from a file. public static Person readObjectFromFile(File file) throws IOException, ClassNotFoundException { Person result = null; try (FileInputStream fis = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(fis)) { result = (Person) ois.readObject(); } return result; } }
Выход
Person{name='mkyong', age=50, salary=null}
3. Дополнительные примеры сериализации
// Serialization // Save object into a file. public static void writeObjectToFile(Person obj, File file) throws IOException { try (FileOutputStream fos = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fos)) { oos.writeObject(obj); oos.flush(); } } // Serialization // Convert object to OutputStream public static void writeObjectToStream(Object obj, OutputStream output) throws IOException { try (ObjectOutputStream oos = new ObjectOutputStream(output)) { oos.writeObject(obj); oos.flush(); } } // Serialization // Convert object to byte[] public static byte[] writeObjectToStream(Object obj) { ByteArrayOutputStream boas = new ByteArrayOutputStream(); try (ObjectOutputStream ois = new ObjectOutputStream(boas)) { ois.writeObject(obj); return boas.toByteArray(); } catch (IOException ioe) { ioe.printStackTrace(); } throw new RuntimeException(); }
Скачать Исходный Код
$клон git https://github.com/mkyong/core-java.git
$cd java-ввод-вывод/com/mkyong/ввод-вывод/объект
Рекомендации
- Поток вывода объектов javadoc
- Примеры сериализации и десериализации Java
- Фильтрация сериализации
- OWASP – Десериализация ненадежных данных
- Брайан Гетц – К Лучшей Сериализации
- Злые маринованные огурцы: DOS-атаки на основе объектно-графовой инженерии
- Спецификация Сериализации Объектов Java
- Как прочитать объект из файла в Java (ObjectInputStream)
Оригинал: “https://mkyong.com/java/how-to-write-an-object-to-file-in-java/”