Home » Core Java » io » ObjectInputStream » Java ObjectInputStream and ObjectOutputStream Example

About Anirudh Bhatnagar

Anirudh Bhatnagar
Anirudh is a Java programmer with extensive experience in building Java/J2EE applications. He has always been fascinated by the new technologies and emerging trends in software development. He has been involved in propagating these changes and new technologies in his projects. He is an avid blogger and agile enthusiast who believes in writing clean and well tested code.

Java ObjectInputStream and ObjectOutputStream Example

In this example we will see how we can use Java’s ObjectInputStream and ObjectOutputStream classes to serialize objects and store them as a file or any other storage accessible by Output Stream; read them again, deserialize it into an object and use it.

ObjectOutputStream Example

So, first we will see how to write an object into a File using FileOutputStream object. We will wrap FileOutputStream in a ObjectOutputStream and write into the file using ObjectOutputStream's writeObject() method.
 

Important thing to not here is that the object which is to be serialised needs to implement java.io.Serializable interface and hence implement the toString() method.

Lets see this in example :

User.java

package com.javacodegeeks.example;

import java.io.Serializable;

public class User implements Serializable {

	/**
	 * @author anirudh
	 */
	private static final long serialVersionUID = 8309080721495266420L;
	private String firstName;
	private String lastName;
	private String email;

	public User(String firstName, String lastName, String email) {
		super();
		this.firstName = firstName;
		this.lastName = lastName;
		this.email = email;
	}

	//..getters and setters...

	/**
	 * Two users are equal if their firstName, lastName and email address is
	 * same.
	 */
	@Override
	public boolean equals(Object obj) {
		return (this.firstName.equals(((User) obj).firstName)
				&& this.lastName.equals(((User) obj).lastName) && this.email
					.equals(((User) obj).email));
	}

	@Override
	public String toString() {
		return getFirstName() + " " + getLastName() + " " + getEmail();
	}

}

JavaObjectInputOutputStreamExample.java

package com.javacodegeeks.example;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * 
 * @author anirudh
 */
public class JavaObjectInputOutputStreamExample {

	public static void main(String[] args) {

		try {

			// Store Serialized User Object in File
			FileOutputStream fileOutputStream = new FileOutputStream(
					"/Users/anirudh/user.txt");
			User user = new User("Anirudh", "lastName", "email");
			ObjectOutputStream output = new ObjectOutputStream(fileOutputStream);
			output.writeObject(user);
			output.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
	}

}

ObjectInputStream Example

In the above example we wrote the user object into a file. In order to read from this file , we will use ObjectInputStream. This class enables us to read Java Objects from InputStream instead of only bytes. We can wrap an InputStream in a ObjectInputStream and then can read objects from it.

Lets see this in the example :

JavaObjectInputOutputStreamExample.java

package com.javacodegeeks.example;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * 
 * @author anirudh
 * 
 */
public class JavaObjectInputOutputStreamExample {

	public static void main(String[] args) {

		try {

			//Read from the stored file
			FileInputStream fileInputStream = new FileInputStream(new File(
					"/Users/anirudh/test.txt"));
			ObjectInputStream input = new ObjectInputStream(fileInputStream);
			User user2 = (User) input.readObject();
			System.out.println(user2.getFirstName());
			input.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

}

Output :

Anirudh

In the example we read a file which was previously written by ObjectOutputStream as a serialised object. Here, we have deserialised it using ObjectInputStream.readObject() method.

This was an example of using ObjectInputStream and ObjectOutputStream classes in Java.

Download
You can download the full source code of this example here : JavaObjectInputOutputStreamExample.zip
(No Ratings Yet)
Start the discussion Views Tweet it!

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!

 

1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design

 

and many more ....

 

Receive Java & Developer job alerts in your Area

 

Leave a Reply

avatar
  Subscribe  
Notify of