Piyush Mittal
Piyush Mittal

Reputation: 1890

getting multiple objects from serialization in java

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

Answers (2)

Garry
Garry

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

Sneh
Sneh

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

Related Questions