序列化)
作者概述大家好我是你们的噜噜大王简称噜*王本次笔记针对与.NET4.8语法关于文件操作二进制序列化反序列化的操作帮助小白20分钟掌握这个知识点。1*什么是序列化我认为序列化就是把对象转换成二进制数据然后保存到文件当中例如一个常见的People对象我们可以通过序列化可以把它保存到文件中你懂吗People p1 new People() { Name 噜噜.09-11, Age 30 };2*什么是反序列化呢噜噜大王认为反序列化就是从文件中读取数据然后还原成原来的对象。就是 文件 》二进制数据 》People对象固定套路1把单个对象保存到文件在把对象保存之前必须要把这个People类前加相当于打一个可以序列化标签[Serializable]这个// 第一步创建一个准备保存的对象 People p1 new People() { Name 噜噜.09-11, Age 30 }; // 第二步取得程序运行目录 // 这里只是获取地址并没有创建文件夹或文件 string baseDirectory AppDomain.CurrentDomain.BaseDirectory; // 第三步拼出 Data 文件夹路径 // Path.Combine 只负责拼地址不负责真正创建文件夹 string dataDirectory Path.Combine(baseDirectory, Data); // 第四步真正创建 Data 文件夹 // 已经存在时会安静跳过因此可以放心重复调用 Directory.CreateDirectory(dataDirectory); // 第五步拼出对象文件的完整路径 // 这里只是拼地址obj.dat 此时还没有被创建 string filePath Path.Combine(dataDirectory, obj.dat); // 第六步FileMode.Create 会创建或清空目标文件 // 执行 new FileStream 的这一刻obj.dat 才真正被创建 using (FileStream fileStream new FileStream( filePath, FileMode.Create, FileAccess.Write)) { // 第七步创建二进制序列化工具 BinaryFormatter formatter new BinaryFormatter(); // 第八步把 p1 对象转换为二进制并写入文件流 // 第一个参数是目标流第二个参数是要保存的对象 formatter.Serialize(fileStream, p1); } // 为什么用 using离开花括号后自动关闭文件避免文件一直被占用 Console.WriteLine(对象保存成功); Console.WriteLine(保存位置 filePath); Console.ReadKey();对于上述我认为小白有疑问的地方在于1.Path.Combine----空1----空2----这里空1代表一个路径而空2是相当于一个字符串这里第一个无脑记他是一个名称第二步它只负责拼出文件夹的路径而后面的Date 是这个文件夹的名称第五步它负责在这个文件夹的路径上在添加一个路径而这个路径就是文件的路径相当于在这个文件夹中创建了一个文件而后面的obj.dat 就是在这个文件夹里面创建一个名称叫obj.dat的文件。2.Directory.CreateDirectory(空1)这个才是真正创建文件的“钥匙” 第二个无脑记住就行.里面写你要创建的路径。如果这个路径已经创建了文件夹或者文件那么他就会自动跳过本段代码。3.using (FileStream fileStream new FileStream filePath,FileMode.Create,FileAccess.Write))这段代码依旧第三个无脑记住就行filePath 是你要操作的地址 FileMode.Create没有文件就创建有就覆盖里面的内容。而后面的FileAccess.Write 可写可不写小白省事的话不写就行。4.BinaryFormatter这个序列化反序列化的一个工具(相当于一个盒子)第四个无脑记住就行。5.Serialize相当于配合序列化工具的一个子工具(相当于搭配盒子的一个工具负责往盒子里进行“放”这个操作)使用方法就是创建一个BinaryFormatter的对象然后 对象.Serialize空1空2 空1 代表fileStream地址空2 代表要保存的对象一个People对象无脑记住这5步对应的词语然后多用多练就行 总结就是1.拼文件夹地址 2.拼文件地址 3.创建文件(有就忽略) 4..using (FileStream fileStream new FileStream filePath,FileMode.Create,FileAccess.Write))小白我建议这一步直接记住就行见得多了自然就懂了 5.准备序列化大(BinaryFormatter)工具和小(Serialize)工具。下一篇讲解反序列化操作。