从java中的序列化中获取多个对象

时间:2015-07-10 10:58:42

标签: java serialization

我希望使用序列化从文件中获取多个Employee类的功能。在这里我只得到一个对象任何解决方案??

    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);
    }
}

这里的Deserialization类如何在List中获取多个对象? 在此先感谢.. !!

2 个答案:

答案 0 :(得分:1)

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();
}

注意:您还可以序列化List并将其存储在文件中,然后对其进行反序列化。 (添加列表是可序列化的列表)

答案 1 :(得分:1)

您可以按如下方式序列化和反序列化对象数组:

ItemsSource="{Binding}"