Home
›
ObjectInputStream and ObjectOutputStream
Posted by: InstanceOfJava
Posted date:
Mar 1, 2015
/
- ObjectInputStream and ObjectOutputStream classes are used to store
objects state permanently in files or to send to remote computer via
network.
- ObjectOutputStream class is subclass of ObjectOutput interface. It
implements below method to write object to underline output stream.
- public void writeObject(Object ob)throws IOException
- ObjectInputStream class is a subclass of ObjectInput interface. It
implements below method to read object to underline output stream.
- public Object readObject() throws IOException
Rule:
- To write or send object to external world it must be java.io.Serializable interface type.
- It means this objects class must be a sub class of
java.io.Serializable interface, else write() method throws
java.io.NotSerializableException.
Constructors to create above two classes objects:
- Like DataInputStream and DataOutputStream , ObjectInputStream and
ObjectOutputStream are also can not connect to source and destination
directly. So their constructors take other input and output stream class
objects.
- public ObjectInputStream(InputStream in)
- public ObjectOutputStream(OutputStream out)
- package instanceofjava;
-
- import java.io.FileOutputStream;
- import java.io.ObjectOutputStream;
- import java.io.Serializable;
-
- public class SerDemo implements Serializable {
-
- String name;
- String phonum;
- String address;
- int pin;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getPhonum() {
- return phonum;
- }
-
- public void setPhonum(String phonum) {
- this.phonum = phonum;
- }
-
- public String getAddress() {
- return address;
- }
-
- public void setAddress(String address) {
- this.address = address;
- }
-
- public int getPin() {
- return pin;
- }
- public void setPin(int pin) {
- this.pin = pin;
- }
-
- public static void main(String[] args)throws Exception{
-
- SerDemo empobj= new SerDemo();
- empobj.setName("sai");
- empobj.setAddress("xxx, xxxstreet ");
- empobj.setPhonum("040-9999999");
- empobj.setPin(500072);
-
- ObjectOutputStream oos= new ObjectOutputStream(new
- FileOutputStream("E:\\employee.ser"));
-
- oos.writeObject(empobj);
-
- }
- }
- package instanceofjava;
-
- import java.io.FileInputStream;
- import java.io.ObjectInputStream;
-
- public class DeserDemo {
-
- public static void main(String[] args)throws Exception{
-
- ObjectInputStream ois= new ObjectInputStream(new FileInputStream("E:\\employee.ser"));
- SerDemo obj= (SerDemo)ois.readObject();
- System.out.println(obj.getAddress()):
-
- }
- }
Output:
- sai
- xxx, xxxstreet
- 500072
- 040-9999999
- This is the actual functionality of ObjectOutputStream and ObjectInputStream: Serialization and deserialization
Serialization:
- Serialization is the process of converting objects into stream of bytes and sending them to underlying output stream.
- Using serialization we can store object state permanently in a destination , for example on remote computer.
- Serialization operation performed by the writeObject() method of ObjectOutputStream.
Deserialization:
- Deserialization is the process of converting stream of bytes into original object.
- Deserialization operation is performed by readObject() of ObjectInputStream.
Rule:
- Only java.io.serializable type objects are serialized. Serializable is a marker interface, it does not have any methods.
- It provides special permission or identity to JVM to serialize Object.
- If the given object is not of type serializable interface then
writeObject() will throw an unchecked exception called
java.io.NotSerializableException.
No comments