Date: 2018oct11
Update: 2025oct9
Language: Java
Keywords: serial, serialize, persist, database, POD
Q. Java: Serialize an object to a file
A. implement Serializable in your object and Use ObjectOutputStream.
Shown as a full example:
import java.io.Serializable;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import java.util.LinkedList;
class Demo {
static class Entry implements Serializable {
private String mData;
Entry(String in) {
mData = in;
}
@Override
public String toString() {
return mData;
}
}
public static final String THE_FILE = "/tmp/myobject.data";
static boolean writeObject(final LinkedList<Entry> list) {
final String filename = THE_FILE;
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename));
oos.writeObject(list);
oos.flush();
oos.close();
} catch(Exception ex) {
System.err.println(ex.getMessage());
return false;
}
return true;
}
@SuppressWarnings("unchecked")
static LinkedList<Entry> readObject() {
final String filename = THE_FILE;
LinkedList<Entry> list = new LinkedList<Entry>();
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename));
list = (LinkedList<Entry>) ois.readObject();
ois.close();
} catch(Exception ex) {
System.err.println(ex.getMessage());
}
return list;
}
public static final void main(String []args) {
{
LinkedList<Entry> a = new LinkedList<>();
a.add(new Entry("one"));
a.add(new Entry("two"));
writeObject(a);
System.out.println("wrote=" + a);
}
{
var b = readObject();
System.out.println("read=" + b);
}
}
}
Output:
wrote=[one, two]
read=[one, two]
Error checking and file locking omitted for clarity.
This works with any kind of object, LinkedList<Entry> is just an example.