Version 2.1
Copyright © 2008, 2009, 2010, 2011, 2012 Lars Vogel
19.07.2011
| Revision History | ||
|---|---|---|
| Revision 0.1 | 07.08.2008 | Lars Vogel |
| created | ||
| Revision 0.2 - 2.1 | 22.09.2008 - 15.02.2012 | Lars Vogel |
| bug fixes and updates | ||
Table of Contents
Via Java Serialization you can stream your Java object to a
sequence of
byte and restore these objects from this stream of
bytes. To make a
Java object serializable you implement the
java.io.Serializable
interface. This is only a marker interface which tells the
platform
that the object is serializable.
Certain system-level classes such as
Thread,
OutputStream
and its subclasses, and
Socket
are not serializable. If you serializable class contains such objects,
it must mark then as "transient".
Create a Java project called "de.vogella.java.serilization". Create the following Java object called "Person".
package de.vogella.java.serilization; import java.io.Serializable; public class Person implements Serializable { private String firstName; private String lastName; // stupid example for transient transient private Thread myThread; public Person(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; this.myThread = new Thread(); } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public String toString() { return "Person [firstName=" + firstName + ", lastName=" + lastName + "]"; } }
The following code example show you how you can serializable and de-serializable this object.
package de.vogella.java.serilization; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class Main { public static void main(String[] args) { String filename = "time.ser"; Person p = new Person("Lars", "Vogel"); // Save the object to file FileOutputStream fos = null; ObjectOutputStream out = null; try { fos = new FileOutputStream(filename); out = new ObjectOutputStream(fos); out.writeObject(p); out.close(); } catch (Exception ex) { ex.printStackTrace(); } // Read the object from file // Save the object to file FileInputStream fis = null; ObjectInputStream in = null; try { fis = new FileInputStream(filename); in = new ObjectInputStream(fis); p = (Person) in.readObject(); out.close(); } catch (Exception ex) { ex.printStackTrace(); } System.out.println(p); } }
Before posting questions, please see the vogella FAQ. If you have questions or find an error in this article please use the www.vogella.com Google Group. I have created a short list how to create good questions which might also help you.