FileFileInputStreamObjectInputStream

How to Read an Object from File in Java

In the previous tutorial we saw how to write an Object to a file in Java. In this example we are going to see how to read an Object from the file that we’ve stored it earlier.

Basically, to read an Object from a file, one should follow these steps:

  • Open a FileInputStream to the file that you’ve stored the Object to.
  • Open a ObjectInputStream to the above FileInpoutStream.
  • Use readObject method of ObjectInputStream class to read the Object from the file.
  • The above method returns an Object of type Object. So you have to cast it to the original type to use it properly.

Let’s see the code snippets that follow:
Student.java

package com.javacodegeeks.java.core;

import java.io.Serializable;

public class Student implements Serializable {

	//default serialVersion id
	private static final long serialVersionUID = 1L;

	private String first_name;
	private String last_name;
	private int age;

	public Student(String fname, String lname, int age){
		this.first_name = fname;
		this.last_name  = lname;
		this.age        = age;
	}

	public void setFirstName(String fname) {
		this.first_name = fname;
	}

	public String getFirstName() {
		return this.first_name;
	}

	public void setLastName(String lname) {
		this.first_name = lname;
	}

	public String getLastName() {
		return this.last_name;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getAge() {
		return this.age;
	}

	@Override
	public String toString() {
		return new StringBuffer(" First Name : ").append(this.first_name)
				.append(", Last Name : ").append(this.last_name).append(", Age : ").append(this.age).toString();
	}

}

ObjectIOExample.java

package com.javacodegeeks.java.core;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ObjectIOExample {

	private static final String filepath="C:\\Users\\nikos7\\Desktop\\obj";

	public static void main(String args[]) {

		ObjectIOExample objectIO = new ObjectIOExample();

		//Read object from file
		Student st = (Student) objectIO.ReadObjectFromFile(filepath);
		System.out.println(st);
	}

	public Object ReadObjectFromFile(String filepath) {

		try {

			FileInputStream fileIn = new FileInputStream(filepath);
			ObjectInputStream objectIn = new ObjectInputStream(fileIn);

			Object obj = objectIn.readObject();

			System.out.println("The Object has been read from the file");
			objectIn.close();
			return obj;

		} catch (Exception ex) {
			ex.printStackTrace();
			return null;
		}
	}
}

Output

The Object has been read from the file
 First Name : John, Last Name : Frost, Age : 22

Here is the code of the complete Read/Write Object From/To File interface in Java:

Student.java

package com.javacodegeeks.java.core;

import java.io.Serializable;

public class Student implements Serializable {

	//default serialVersion id
	private static final long serialVersionUID = 1L;

	private String first_name;
	private String last_name;
	private int age;

	public Student(String fname, String lname, int age){
		this.first_name = fname;
		this.last_name  = lname;
		this.age        = age;
	}

	public void setFirstName(String fname) {
		this.first_name = fname;
	}

	public String getFirstName() {
		return this.first_name;
	}

	public void setLastName(String lname) {
		this.first_name = lname;
	}

	public String getLastName() {
		return this.last_name;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getAge() {
		return this.age;
	}

	@Override
	public String toString() {
		return new StringBuffer(" First Name : ").append(this.first_name)
				.append(", Last Name : ").append(this.last_name).append(", Age : ").append(this.age).toString();
	}

}

ObjectIOExample.java

package com.javacodegeeks.java.core;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ObjectIOExample {

	private static final String filepath="C:\\Users\\nikos7\\Desktop\\obj";

	public static void main(String args[]) {

		ObjectIOExample objectIO = new ObjectIOExample();

		Student student = new Student("John","Frost",22);
		objectIO.WriteObjectToFile(filepath, student);

		//Read object from file
		Student st = (Student) objectIO.ReadObjectFromFile(filepath);
		System.out.println(st);
	}

	public void WriteObjectToFile(String filepath,Object serObj) {

		try {

			FileOutputStream fileOut = new FileOutputStream(filepath);
			ObjectOutputStream objectOut = new ObjectOutputStream(fileOut);
			objectOut.writeObject(serObj);
			objectOut.close();
			System.out.println("The Object  was succesfully written to a file");

		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	public Object ReadObjectFromFile(String filepath) {

		try {

			FileInputStream fileIn = new FileInputStream(filepath);
			ObjectInputStream objectIn = new ObjectInputStream(fileIn);

			Object obj = objectIn.readObject();

			System.out.println("The Object has been read from the file");
			objectIn.close();
			return obj;

		} catch (Exception ex) {
			ex.printStackTrace();
			return null;
		}
	}
}

Output

The Object  was succesfully written to a file
The Object has been read from the file
 First Name : John, Last Name : Frost, Age : 22

 
This was an example on how to Read an Object from File in Java

Ilias Tsagklis

Ilias is a software developer turned online entrepreneur. He is co-founder and Executive Editor at Java Code Geeks.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
bepis max
bepis max
5 years ago

it always says “invalid stream header” :(

Ravi
Ravi
3 years ago

private static final long serialVersionUID = 1L; can you please explain the purpose of this statement

Back to top button