概念与理解:
字符流及字节流:
文件(实际的物理存储形式:字节)-----字节流(按照一个字节,八个二进制位读取,写入)-----字符流(按照指定或系统默认的编码(utf8)读取16位二进制数,两个字节并将其编码为字符)-----内存中的字符(虚拟的抽象的表现形式:字符)
文件的存储及数据的传输都是以字节的形式,只有当需要在内存中操作时才需要字符流,字符只存在于内存中。
字节流和字符流的使用:
当操作的对象不需要关心编码的问题,如图像,声音等二进制数据的拷贝,传送。或需要文件加密时,(不需再内存中操作),应使用字节流。
当需要关心编码的问题(需要在内存中操作),应使用字符流。
序列化:
文件----字节流-----序列化-----内存中的类,对象,包括数组,结构等。
.NET Framework 提供两种序列化技术:
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,就使得数据能够被轻松地存储和传输。
公共语言运行库管理对象在内存中的布局方式并通过使用反射提供自动的序列化机制。当序列化一个对象时,类的名称、程序集和类实例的所有数据成员都被写入存储中。对象通常在成员变量中存储对其他实例的引用。在序列化类时,序列化引擎跟踪所有已被序列化的引用的对象,以确保同一对象不会被多次序列化。随 .NET Framework 一起提供的序列化结构自动正确处理对象图和循环引用。对于对象图的唯一要求就是,由正被序列化的对象引用的所有对象还必须被标记为 Seri