Serialization – Deserialization

StudentClass.java

package Serialization;

import java.io.Serializable;

public class StudentClass implements Serializable {

 private static final long serialVersionUID = -8637154581160041863L;
 private long id;
 private String name;
 private String emailid;
 private String contactno;
 private int age;
 private boolean knowntamil;

 //setter and getter method for id
 public void setid(long id){
 this.id=id;
 }
 public long getid(){
 return id;
 }

 //setter and getter method for name
 public void setname(String name){
 this.name=name;
 }
 public String getname(){
 return name;
 }

 //setter and getter method for email
 public void setemail(String emailid){
 this.emailid=emailid;
 }
 public String getemail(){
 return emailid;
 }

 //setter and getter method for contact no
 public void setcontactno(String contactno){
 this.contactno=contactno;
 }
 public String getcontactno(){
 return contactno;
 }

//setter and getter method for age
public void setage(int age){
 this.age=age;
 }
 public int getage(){
 return age;
 }

 //setter and getter method for Knowntamil
 public void setknows(boolean knowntamil ){
 this.knowntamil=knowntamil;
 }
 public boolean getknows(){
 return knowntamil;
 }
}

 

LogicClass.java

package Serialization;

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;
import java.io.Serializable;

public class LogicClass implements Serializable {

 private static final long serialVersionUID = 4878739045114890667L;
 FileOutputStream fosObj;
 ObjectOutputStream oosObj;
 FileInputStream fisObj;
 ObjectInputStream oisObj;

 public void doSerialize()
 {
 File fObj = new File("e:/MySer.txt");
 StudentClass StudentClassObj1 = new StudentClass();

 StudentClassObj1.setid(1203);
 StudentClassObj1.setname("Ramunujam");
 StudentClassObj1.setemail("Raman@gamil.com");
 StudentClassObj1.setcontactno("9824525423");
 StudentClassObj1.setage(34);
 StudentClassObj1.setknows(true);

 try {
 fosObj = new FileOutputStream(fObj);
 oosObj = new ObjectOutputStream(fosObj);
 oosObj.writeObject(StudentClassObj1);
 } catch (FileNotFoundException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 finally
 {
 try {
 oosObj.close();
 } catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 }
 }

 void doDeSerialize()
 {

 File fObj = new File("e:/MySer.txt");
 try {
 fisObj = new FileInputStream(fObj);
 oisObj = new ObjectInputStream(fisObj);
 StudentClass retrivedObj = (StudentClass) oisObj.readObject();
 System.out.println(retrivedObj.getname());
 } catch (FileNotFoundException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } catch (ClassNotFoundException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }

 }
}

TestSerialization.java

package Serialization;

import java.io.Serializable;

public class TestSerialization implements Serializable{

private static final long serialVersionUID = 1L;

public static void main(String[] args) {
// TODO Auto-generated method stub
LogicClass lcObj = new LogicClass();
lcObj.doSerialize();
lcObj.doDeSerialize();
}
}

transient Keyword

  • Java transient keyword is used in serialization. If you define any data member as transient, it will not be serialized.
  • transient keyword can not be used along with static keyword.
  • transient variables are initialized with default value during de-serialization.

Example: 

Student.java

package com.transientkeyword;
import java.io.Serializable;
public class Student implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
int id;
String name;
transient int age;//Now it will not be serialized
public Student(int id, String name,int age) {
this.id = id;
this.name = name;
this.age=age;
}
}

TestTransient.java

package com.transientkeyword;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class TestTransient {

public static void main(String[] args) throws IOException {
//creating an object
Student s1 =new Student(231,"Sridhar",34);
FileOutputStream f=new FileOutputStream("Sample.txt");
ObjectOutputStream out=new ObjectOutputStream(f);
//writing an object to a file
out.writeObject(s1);
out.flush();

out.close();
f.close();
System.out.println("Student Information Stored Successfully");

}

}

TestDeserialization.java

package com.transientkeyword;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class TestDeserialization {

public static void main(String[] args) throws ClassNotFoundException, IOException {
ObjectInputStream in=new ObjectInputStream(new FileInputStream("Sample.txt"));
Student s=(Student)in.readObject();
System.out.println(s.id+" "+s.name+" "+s.age);
in.close();

}

}