|
| |
Consider the following classes:
package serialization;
import java.io.Serializable;
public class Address implements Serializable
{
public Address(String name, String address)
{
m_name = name;
m_address = address;
}
public String getName()
{
return m_name;
}
public String getAddress()
{
return m_address;
}
///// Private data /////
private String m_name;
private String m_address;
} |
package serialization;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.Hashtable;
public class AddressBook implements Serializable
{
public Address lookup(String name)
{
return (Address) m_table.get(name);
}
public Address add(String name, String address)
{
return (Address) m_table.put(name,
new Address(name,
address));
}
public int size()
{
return m_table.size();
}
public Enumeration addresses()
{
return m_table.elements();
}
//// Private data ////
private Hashtable m_table = new Hashtable();
} |
Now, let's write a program to populate an AddressBook with Addresses and then
serialize the results out:
package serialization;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class SerializeOutAddressBook
{
public static void main(String[] args)
{
AddressBook book = new AddressBook();
book.add("Bill Gates", "1000 High-on-the-Hog Drive");
book.add("Scott McNealy", "4000 Java Circle");
book.add("Linus Torvalds", "300 Linux Lane");
FileOutputStream fout = null;
ObjectOutputStream out = null;
try
{
fout = new FileOutputStream("addrbook.ser");
out = new ObjectOutputStream(fout);
out.writeObject(book);
System.out.println("Serialization successful!");
}
catch(IOException ex)
{
ex.printStackTrace();
}
finally
{
try
{
if (out != null)
out.close();
if (fout != null)
fout.close();
}
catch(IOException ex)
{ /* Do nothing */ }
}
}
} |
Finally, let's write a program to serialize the AddressBook back
in, and display the Addresses
it contains:
package serialization;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Enumeration;
public class SerializeInAddressBook
{
public static void main(String[] args)
{
AddressBook book = null;
FileInputStream fin = null;
ObjectInputStream in = null;
try
{
fin = new FileInputStream("addrbook.ser");
in = new ObjectInputStream(fin);
book = (AddressBook) in.readObject();
System.out.println("Serialization successful!");
Enumeration en = book.addresses();
while (en.hasMoreElements())
{
Address addr = (Address) en.nextElement();
System.out.println(
"Name: [" + addr.getName() + "], " +
"Address: [" + addr.getAddress() + "]");
}
}
catch(ClassNotFoundException ex)
{
ex.printStackTrace();
}
catch(IOException ex)
{
ex.printStackTrace();
}
finally
{
try
{
if (in != null)
in.close();
if (fin != null)
fin.close();
}
catch(IOException ex)
{ /* Do nothing */ }
}
}
} |
which outputs the following:
Serialization successful!
Name: [Linus Torvalds], Address: [300 Linux Lane]
Name: [Scott McNealy], Address: [4000 Java Circle]
Name: [Bill Gates], Address: [1000 High-on-the-Hog Drive]
|