我有以下问题:有一个名为 的类UserConfigStorage,其中有 8 个字符串。程序第一次运行时,会要求用户输入他们的个人信息,这些信息存储在上述 8 个字符串中。一旦用户点击一个按钮,这个类就会被序列化和加密,以防止用户修改它。然后,当程序第二次运行时,根据Form_Load事件,文件被解密,并使用反序列化方法将其中的信息加载到文本框。但是,System.Runtime.Serialization.SerializationException: End of Stream encountered before parsing was completed抛出异常,并且无法读取文件。
在查看代码和生成的文件时,我发现生成的解密文件没有所有信息。它实际上只存储了 8 个字符串中的 6 个。
方法如下:
序列化方法
public void SerializeUserConfig(string fileName)
{
try
{
FileStream fileStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
BinaryFormatter binForm = new BinaryFormatter();
binForm.Serialize(fileStream, userconfigstorage);
fileStream.Close();
encryptor.Encrypt(fileName, perfilAcesso.GetUserConfigPath() + "Encrypted", "syndra15OP");
File.Delete(fileName);
MessageBox.Show("Dados salvos com sucesso!");
}
catch (Exception exception)
{
errorlog.SetError(exception.ToString());
SerializeError(perfilAcesso.GetUserErrorLogPath());
MessageBox.Show("Houve um erro ao salvar as configurações!\nPor favor, contate o desenvolvedor.\n\nEID: 002");
}
}
反序列化方法
public UserConfigStorage DeserializeUserConfig(string fileName)
{
encryptor.Decrypt(perfilAcesso.GetUserConfigPath() + "Encrypted", fileName, "syndra15OP");
FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryFormatter binForm = new BinaryFormatter();
UserConfigStorage userconfigstorage = (UserConfigStorage)binForm.Deserialize(fileStream);
fileStream.Close();
return userconfigstorage;
}
任何人都可以帮助我了解导致文件未完全解密的原因吗?提前致谢!
白衣非少年
相关分类