我正在尝试序列化一个对象数组和一个字符串。这是序列化代码:
FileStream s;
s = new FileStream(savefile.FileName, FileMode.Create, FileAccess.Write);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(s, ch.chaps);
bf.Serialize(s, txtPassword.Text);
s.Close();
这是反序列化代码:
FileStream s;
s = new FileStream(openfile.FileName, FileMode.Open, FileAccess.Read);
BinaryFormatter bf = new BinaryFormatter();
string password = (string)bf.Deserialize(s);
ch.chaps = (Chapter[])bf.Deserialize(s);
s.Close();
int i;
if (password == txtPassword.Text)
{
for (i = 0; i <= 1000; i++)
{
try
{
combChapSelect.Items.Add(ch.chaps[i].chapName);
}
catch
{
i = 1000;
}
}
}
这是代码和visual studio说没有错误但是当我选择一个文件时没有发生任何事情时openfiledialog没有关闭。我做错了什么或有其他方法来序列化不同的对象类型吗?
答案 0 :(得分:1)
你正在倒退。您必须按序列化的顺序反序列化。
在序列化中,它的chaps-then-password。在你的反序列化中,它的密码然后是chaps。