Programming Tips - Java: Quickly save/load a data structure to disk (with serialization)

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]