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();这样写不报错了.

解决方案 »

  1.   

    obj = formatter.Deserialize(stream) as string[]; 
    这里 我也有相同问题 不过比你的难度大 我的是自定义的序列化类
      

  2.   

    你的字符串保存的时候使用什么格式 读的时候一样
    你确认你用的是默认格式吗?
    byte[] byteArray = System.Text.Encoding.Default.GetBytes(str); 
    这里读出来也许就不对
      

  3.   


                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);
                }