然后再从这个文件中把这些对象读到list里面

解决方案 »

  1.   

      list 也是一个对象。应该跟别的对象一样弄。对象应该会递归地序列化属性对象。不知道我的理解对不对。
      

  2.   

    List是一个接口,直接用ObjectOutputStream保存它是肯定不行的。
    而ArrayList等类是实现了Serializable接口的,可以保存到磁盘中。
    所以,你在定义List的时候应该像下面这样:
    ArrayList<Object> list = new ArrayList<Object>;
    而不是这样:
    List<Object> list = new ArrayList<Object>;保存成文件以后,读出来就是原来的样子了。
    有个帖子你可以参考:
    http://topic.csdn.net/u/20090804/16/7d2462d2-292b-43c5-820d-7addcf4380fd.html
      

  3.   

    你可以先用Object[] toArray()这个方法,然后用ObjectOutputStream中的writeObject()方法写入文件
    读取对应的用ObjectInputStream中的readObject(),并把读到的Object用add方法加入list里
      

  4.   

    ArrayList 这样的容器不用手动去序列化,因为他们天生就支持关键要把你的Object序列化 给你的Object类加上 implements Serializable 就可以了
      

  5.   

    每一个Object都要实现Serializable 接口才行。
      

  6.   


    import java.io.*;
    import java.util.*;
    public class TestSerializable2 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    List<Object> test = new ArrayList<Object>();
    test.add(new TEST("a"));
    test.add(new TEST("b"));
    test.add(new TEST("c"));

    try {
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c:/test/testSer5.ser"));
    oos.writeObject(test);
    oos.flush();
    oos.close();
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }}class TEST implements Serializable{

    String name;
    TEST(String name){
    this.name = name;
    }

    }
      

  7.   

    补充一下读取的代码import java.io.*;
    import java.util.*;
    public class TestSerializable2 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    List<Object> test = new ArrayList<Object>();
    test.add(new TEST("a"));
    test.add(new TEST("b"));
    test.add(new TEST("c"));

    try {
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c:/test/testSer5.ser"));
    oos.writeObject(test);
    oos.flush();
    oos.close();
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    try{
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c:/test/testSer5.ser"));
    List test1 = (List)ois.readObject();

    for(Object obj : test1){
    TEST t = (TEST)obj;
    System.out.println(t.name);
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    }}class TEST implements Serializable{

    String name;
    TEST(String name){
    this.name = name;
    }

    }
      

  8.   


    import java.io.*;
    import java.util.*;
    public class TestSerializable2 {    /**
         * @param args
         */
        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub        List<Object> test = new ArrayList<Object>();
            test.add(new TEST("a"));
            test.add(new TEST("b"));
            test.add(new TEST("c"));        try {
                ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c:/test/testSer5.ser"));
                oos.writeObject(test);
                oos.flush();
                oos.close();
                ObjectInputStream iis = new ObjectInputStream(new FileInputStream("c:/test/testSer5.ser"));
                List<Object> testT = (List<Object>)iis.readObject();
                for(Object obj : testT)
                {
                 System.out.println(((TEST)obj).getName());
                }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }}class TEST implements Serializable{    String name;
        TEST(String name){
            this.name = name;
        }    public String getName()
        {
         return this.name;
        }}
    套用楼上仁兄的,这样可能更能说明问题。