我是这样解决的:
用ArrayList放入多个对象(有时用ArrayList []);然后将ArrayList序列化。如你上面程序,你再建一个ArrayList c,c.Add(l);c.Add(k);
或者
ArrayList c []=new ArrayList [2];
for(int i=0;i<2;i++)
c[i]=new ArrayList();c[0]=l;
c[1]=k;但都是:b.Serialize(s, c);
用ArrayList放入多个对象(有时用ArrayList []);然后将ArrayList序列化。如你上面程序,你再建一个ArrayList c,c.Add(l);c.Add(k);
或者
ArrayList c []=new ArrayList [2];
for(int i=0;i<2;i++)
c[i]=new ArrayList();c[0]=l;
c[1]=k;但都是:b.Serialize(s, c);
不对之处,见笑了。
还有,大家到底用序列化作什么呀??可以结合自己做过的东西介绍一下吗??谢谢!!!!
FileAccess.Write);
===>
Stream s1 = File.Open("11.bin", FileMode.Append);
to AhBian:我也想问如何反序列化这些对象中的特定一个??
.NET的书只能告诉你如何做Serialization,不会告诉你真么建索引表的,要看操作系统。实际上就是在你自己的文件里实现一个超级简化的FAT表,不支持插入,不支持随机删除...”
哦,好像很烦。
这样,把源文件反序列化,捡出想要的元素,重新序列化覆盖源文件,好像也很烦,不过应该不难实现。
其实,我最想知道序列化的用途?什么自定义序列化啊,xml序列化啊,各抒己见,谈谈自己的应用心得。
谢谢各位了,18:00之前结贴。
需要你安装vs的帮助。
ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpovrserializingobjects.htm
运行下面两个代码,结果相同:
代码一:
ArrayList l = new ArrayList();
for (int x=1; x< 5; x++)
{
Console.WriteLine (x);
l.Add (x);
}
Stream s = File.Open("11.bin", FileMode.OpenOrCreate, FileAccess.ReadWrite,FileShare.ReadWrite);
BinaryFormatter b = new BinaryFormatter();
b.Serialize(s, l);
s.Close();
ArrayList k = new ArrayList();
for (int x=6; x< 10; x++)
{
Console.WriteLine (x);
k.Add (x);
}
b = new BinaryFormatter();
Stream s1 = File.Open("11.bin", FileMode.Append);
b.Serialize(s1, k);
s.Close();
Console.Write ("正在从磁盘反序列化对象图..");
Stream r = File.Open("foo.bin", FileMode.Open, FileAccess.Read);
BinaryFormatter c = new BinaryFormatter();
ArrayList p = (ArrayList) c.Deserialize(r);
Console.WriteLine ("完成。");
foreach (int i in p)
{
Console.WriteLine (i);
}
r.Close();
Console.WriteLine ("\r\n按 Return 键退出。");
Console.Read();代码二:这是我的思维方式:
Console.WriteLine ("创建对象图");
ArrayList test=new ArrayList();
ArrayList l = new ArrayList();
for (int x=0; x< 10; x++)
{
Console.WriteLine (x);
l.Add (x);
} // 结束 for
test.Add(1);
l = new ArrayList();
for ( int x=10; x< 20; x++)
{
Console.WriteLine (x);
l.Add (x);
} // 结束 for
test.Add(1);
Console.Write ("正在将对象图序列化到磁盘..");
Stream s = File.Open("foo.bin", FileMode.Create, FileAccess.ReadWrite);
BinaryFormatter b = new BinaryFormatter();
b.Serialize(s, test);
s.Close();
Console.WriteLine ("完成。");
Console.Write ("正在从磁盘反序列化对象图..");
Stream r = File.Open("foo.bin", FileMode.Open, FileAccess.Read);
BinaryFormatter c = new BinaryFormatter();
ArrayList p = (ArrayList) c.Deserialize(r);
Console.WriteLine ("完成。");
ArrayList ps=new ArrayList();
for(int t=0;t<p.Count ;t++)
{//没有把两个arraylist取出来。
ps.Add(p[t]);
foreach (int i in ps)
{
Console.WriteLine (i);
}
}
r.Close();
Console.WriteLine ("\r\n按 Return 键退出。");
Console.Read();
看来是我例子没举好,谢谢了!!