小弟的这段代码 是仿照书本案例写的。
但是我在调试时,发现:当运行到:返序列化时。每次运行都执行:try -> catch(SerializationException)
            {
                stream1.Position = 0;
                return null;
            }
而书本的光碟案例的却执行:try
            {
                userInformation = (UserInformation)formatter.Deserialize(stream1);
            }
               return userInformation;
        }
这是什么原因呢?捕获异常时提示:”二进制流“0”不包含有效的 BinaryHeader。这可能是由于无效流,或由于在序列化和反序列化之间 的对象版本更改“    小弟恳求高手们。帮帮小弟,无尽感激。   //返序列化
        public UserInformation Readrecord()
        {
            UserInformation userInformation = null;
            try
            {
                userInformation = (UserInformation)formatter.Deserialize(stream1);
            }
            catch(SerializationException)
            {
                stream1.Position = 0;
                return null;
            }
            return userInformation;
        }
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization;//用于用户信息的,写入、与读取文件数据
namespace SQL_courser
{
    public class FileManage
    {   
        //字节序列 用于用户信息的序列化
        public Stream stream1;
        //以二进制将对象序列化
        BinaryFormatter formatter = new BinaryFormatter();
        BinaryFormatter formatter1 = new BinaryFormatter();        //以在文件性追加数据的形式打开文件  
        public void Appendfile()
        {
            //控制文件。以只写的形式
            stream1 = new FileStream(@"E:\c#126下载\my work\窗体设计\SQL courser\SQL courser\UserInfromation\UserInformationFile.bin", FileMode.Append, FileAccess.Write);
          
        }
     
        //向用户信息文件追加新用户(即序列化)
        public void Addrecord(UserInformation userInformation)
        {
            //将对象转化为流            formatter1.Serialize(stream1, userInformation);
        }        //以只读的形式打开文件
        public void openfile()
        {
            stream1 = new FileStream(@"E:\c#126下载\my work\窗体设计\SQL courser\SQL courser\UserInfromation\UserInformationFile.bin", FileMode.Open, FileAccess.Read);
           
        }        //返序列化
        public UserInformation Readrecord()
        {
            UserInformation userInformation = null;
            try
            {
                userInformation = (UserInformation)formatter.Deserialize(stream1);
            }
            catch(SerializationException)
            {
                stream1.Position = 0;
                return null;
            }
            return userInformation;
        }        //关闭文件
        public void Closefile()
        {
            stream1.Close();
        }
    
    }