-1

我有一个要序列化的数组列表,请告知我将如何做到这一点..

 ArrayList list=new ArrayList();
      list.add("Ram");
      list.add("Sachin");
      list.add("Dinesh");
      list.add(1,"Ravi");
      list.add("Dinesh");
      list.add("Anupam");
      System.out.println("There are "+list.size()+" elements in the list.");
      System.out.println("Content of list are : ");
      Iterator itr=list.iterator();
      while(itr.hasNext())
      System.out.println(itr.next());
     }

}

我想使用序列化机制,以便可以将其保存在文件中

4

2 回答 2

1

这很简单。ArrayListString(存储在列表中)都实现了接口Serializable,因此您可以使用标准的 java 机制进行序列化:

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("myfile"));
oos.writeObject(list);
............
oos.fluch();
oos.close();

在此示例中,我使用 ObjectOutputStream 包装了 FileOutputStream,但显然您可以使用任何其他有效负载流。

于 2012-05-10T17:12:20.187 回答
0

您必须创建自己的方法来序列化和反序列化对象。以下是执行此操作的有用方法。

public static Object deserializeBytes(byte[] bytes) throws IOException, ClassNotFoundException
{
    ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytes);
    ObjectInputStream ois = new ObjectInputStream(bytesIn);
    Object obj = ois.readObject();
    ois.close();
    return obj;
}


public static byte[] serializeObject(Object obj) throws IOException
{
    ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(bytesOut);
    oos.writeObject(obj);
    oos.flush();
    byte[] bytes = bytesOut.toByteArray();
    bytesOut.close();
    oos.close();
    return bytes;
}
于 2012-05-10T17:18:52.773 回答