Date: 2015mar30
Update: 2025oct6
Language: Java
Q. Java: Quickly save/load a data structure to disk (with serialization)
A. Use Java serialization, as shown in this 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.ArrayList;
class Demo {
// Make sure your classes implement java.io.Serializable
static class Entry implements Serializable {
private String mData;
Entry(final String in) {
mData = in;
}
@Override
public String toString() {
return mData;
}
}
static final String FILENAME = "/tmp/stuff.dat";
static boolean writeStuff(ArrayList<Entry> list) {
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILENAME));
oos.writeObject(list);
oos.flush();
oos.close();
} catch(Exception ex) {
System.out.println("Could not write stuff because " + ex.toString());
return false;
}
return true;
}
@SuppressWarnings("unchecked")
static ArrayList<Entry> readStuff() {
ArrayList<Entry> list = new ArrayList<Entry>();
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILENAME));
list = (ArrayList<Entry>) ois.readObject();
ois.close();
} catch(Exception ex) {
System.out.println("Could not read stuff because " + ex.toString());
}
return list;
}
public static final void main(String []args) {
{
ArrayList<Entry> a = new ArrayList<>();
a.add(new Entry("one"));
a.add(new Entry("two"));
System.out.println("a=" + a);
writeStuff(a);
}
{
var b = readStuff();
System.out.println("b=" + b);
}
}
}
Output:
a=[one, two]
b=[one, two]