我想序列化一个包含 Date 对象的 Arraylist,然后能够对其进行反序列化并迭代反序列化的版本。
目前我有一个名为 DateSerialize 的类,它实现了 Serializable。我有一种将日期对象添加到数组列表中的方法,然后一旦完成,我想对其进行序列化。
下次运行程序时,我想反序列化该数组列表并以相同的顺序和格式获取这些对象,并希望在其上运行迭代器。
谁能帮我解决这个问题??
谢谢 !
我想序列化一个包含 Date 对象的 Arraylist,然后能够对其进行反序列化并迭代反序列化的版本。
目前我有一个名为 DateSerialize 的类,它实现了 Serializable。我有一种将日期对象添加到数组列表中的方法,然后一旦完成,我想对其进行序列化。
下次运行程序时,我想反序列化该数组列表并以相同的顺序和格式获取这些对象,并希望在其上运行迭代器。
谁能帮我解决这个问题??
谢谢 !
如果你想使用 Serializable,你应该没有问题,因为 ArrayList 是 Serializable 就像 String 和每个原始类型一样。public class DateSerialize implements Serializable {}
应该做剩下的。您可以在此处阅读有关此方法的更多信息。但是,还有很多其他的序列化选项。所以请更具体。
ArrayList aList = new ArrayList();
MyBusinessObject obj = new MyBusinessObject();
obj.Name = "MyName";
obj.Address = "MyAddress";
obj.Phone = 435345;
aList.Add(obj);
/// <summary>
/// Serialize the ArrayList
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
private string SerializeArrayList(ArrayList obj) {
System.Xml.XmlDocument doc = new XmlDocument();
Type[] extraTypes = new Type[1];
extraTypes[0] = typeof(MyBusinessObject);
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(ArrayList), extraTypes);
System.IO.MemoryStream stream = new System.IO.MemoryStream();
try {
serializer.Serialize(stream, obj);
stream.Position = 0;
doc.Load(stream);
return doc.InnerXml;
} catch { throw; } finally {
stream.Close();
stream.Dispose();
}
}
/// <summary>
/// DeSerialize serialized string
/// </summary>
/// <param name="serializedData"></param>
/// <returns></returns>
private ArrayList DeSerializeArrayList(string serializedData) {
ArrayList list = new ArrayList();
Type[] extraTypes = new Type[1];
extraTypes[0] = typeof(MyBusinessObject);
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(ArrayList), extraTypes);
XmlReader xReader = XmlReader.Create(new StringReader(serializedData));
try {
object obj = serializer.Deserialize(xReader);
list = (ArrayList)obj;
} catch { throw; } finally {
xReader.Close();
}
return list;
}
为什么不存储DateSerialize
为long
(日期的内部值,以毫秒为单位)?