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 aboveFileInpoutStream
. - Use
readObject
method ofObjectInputStream
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
it always says “invalid stream header” :(
private
static
final
long
serialVersionUID = 1L; can you please explain the purpose of this statement