string str="这里存储的是序列化后的字符串";
我现在需要通过str这个字符串
反序列化出来
byte[] byteArray = System.Text.Encoding.Default.GetBytes(str);
Stream stream = new MemoryStream(byteArray);
//StreamReader read = new StreamReader(stream);
BinaryFormatter formatter = new BinaryFormatter();
obj = formatter.Deserialize(stream) as string[];
stream.Flush();
stream.Close();这样写不报错了.
我现在需要通过str这个字符串
反序列化出来
byte[] byteArray = System.Text.Encoding.Default.GetBytes(str);
Stream stream = new MemoryStream(byteArray);
//StreamReader read = new StreamReader(stream);
BinaryFormatter formatter = new BinaryFormatter();
obj = formatter.Deserialize(stream) as string[];
stream.Flush();
stream.Close();这样写不报错了.
这里 我也有相同问题 不过比你的难度大 我的是自定义的序列化类
你确认你用的是默认格式吗?
byte[] byteArray = System.Text.Encoding.Default.GetBytes(str);
这里读出来也许就不对
string b = "这里存储的是序列化后的字符串";//这是对象,只能序列化
BinaryFormatter formatter = new BinaryFormatter();
string result = null;//序列化结果 ,可以反序列化
using (Stream stream = new MemoryStream())
{ formatter.Serialize(stream, b);
stream.Position = 0;
using (StreamReader sr = new StreamReader(stream, Encoding.Unicode))
{
result = sr.ReadToEnd();
Console.WriteLine(result);
}
}
//反序列化
using (MemoryStream deseri = new MemoryStream(Encoding.Unicode.GetBytes(result)))
{
deseri.Position = 0;
string obj = formatter.Deserialize(deseri) as string;
Console.WriteLine(obj);
}