Reputation: 1890
i want to get multiple oblects of Employee class from the file using serialization. here i am getting only one object any solution??
package com.jbt;
import java.io.Serializable;
public class Employee implements Serializable
{
public String firstName;
public String lastName;
private static final long serialVersionUID = 5462223600l;
}
package com.jbt;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class SerializaitonClass {
public static void main(String[] args) {
Employee emp = new Employee();
emp.firstName = "Vivekanand";
emp.lastName = "Gautam";
try {
FileOutputStream fileOut = new FileOutputStream("./employee.txt");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(emp);
out.close();
fileOut.close();
System.out.printf("Serialized data is saved in ./employee.txt file");
} catch (IOException i) {
i.printStackTrace();
}
}
}
package com.jbt;
import java.io.*;
public class DeserializationClass {
public static void main(String[] args) {
Employee emp = null;
try {
FileInputStream fileIn = new FileInputStream("./employee.txt");
ObjectInputStream in = new ObjectInputStream(fileIn);
emp = (Employee) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
return;
} catch (ClassNotFoundException c) {
System.out.println("Employee class not found");
c.printStackTrace();
return;
}
System.out.println("Deserializing Employee...");
System.out.println("First Name of Employee: " + emp.firstName);
System.out.println("Last Name of Employee: " + emp.lastName);
}
}
here in Deserialization class how i can take multiple objects in List?? thanks in advance..!!
Upvotes: 0
Views: 2730
Reputation: 4533
You can serialize and de-serialize an array of objects as below:
File file = new File("out.ser");
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
//Create the multiple Objects
SerializeMe serializeMe = new SerializeMe(1);
SerializeMe serializeMe1 = new SerializeMe(10);
SerializeMe serializeMe2 = new SerializeMe(100);
SerializeMe serializeMe3 = new SerializeMe(1000);
//Create an array and assign objects
Object[] obj=new Object[]{serializeMe,serializeMe1,serializeMe2,serializeMe3};
// Write object array to Stream Class
oos.writeObject(obj);
oos.close();
//Process of Deserializable
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
//create an array of Object class
Object[] obj1=(Object[]) ois.readObject();
//looping the array
for(int i=0;i<obj1.length;i++){
SerializeMe dto = (SerializeMe) obj1[i];
System.out.println("data : " + dto.getData());
}
ois.close();
Upvotes: 1
Reputation: 3747
List<Employee> employeeList = new ArrayList<Employee>();
FileInputStream fis = null;
ObjectInputStream in = null;
try {
fis =new FileInputStream("./employee.txt");
in = = new ObjectInputStream(fis);
while (true) {
employeeList.add((Employee) in.readObject());
}
} catch (EOFException eof) {
// Ignore. means you reached EOF
} finally {
if (fis != null)
fis.close(); // close the stream
if(in != null)
in.close();
}
NOTE : You can also serialize a List
and store it on file and then deserialize it. (Added the list is a serializable List)
Upvotes: 1