c#的.net序列化有多种方式,大多使用流来创建二进制文件。这里以其中一种为例:
序列化bin文件:
Stream fstream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
BinaryFormatter binFormat = new BinaryFormatter();//创建二进制序列化器
binFormat.Serialize(fstream, infos);
fstream.Dispose();
fstream.Close();
* 其中infos可以是链表,字典等或者自定义类结构体
*这里的写入流要使用write并且共享设置成none,不然会影响你的读取
* 如果说又多个文件同时序列化,那么需要吧这一块copy到循环里边,流的释放和关闭不能再使用后延迟,要立即关闭
如果没有及时关闭和释放会影响接下来的 存储
反序列化读取:
FileStream fs = new FileStream(path , FileMode.Open, FileAccess.Read);
BinaryFormatter binayFormat = new BinaryFormatter();
configdata.teamInfos = (List<StoryTeam >)binayFormat.Deserialize(fs);
*值得注意的是,这里的流要是读取流,如果fileaccss选了readandwrite ,当你读取时会抛出异常,说文件共享属性被占用
* (List<StoryTeam >)binayFormat.Deserialize(fs);反序列化过来直接强转到对应类型即可