在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
编程访问文件是通过文件流对象进行的,当应用程序需要访问文件时,必须先创建一个文件流对象,此流对象和文件是一一对应关系。 MemoryStream的数据来自内存中的一块连续区域,这块区域称为“缓冲区(Buffer)”。可以把缓冲区看成一个数组,每个数组元素可以存放一个字节的数据。 在创建MemoryStream对象时,可以指定缓冲区的大小,并且可以在需要的时候更改。 //创建内存流对象,初始分配50字节的缓冲区 //向内存流中写入字节数组的所有数据 MessageBox.Show("写入数据后的内存流长度:" mem.Length.ToString()); mem.SetLength(550); MessageBox.Show("调用SetLength方法后的内存流长度:" mem.Length.ToString()); mem.Capacity = 620;//此值不能小于Length属性 //将读写指针移到距流开头10个字节的位置 //----------------------------------------------------------------------------------------------------------------------- BinaryFormatter序列化 序列化简单点来理解就是把内存的东西写到硬盘中,当然也可以写到内存中(这个内容我会在后面写一个例子).而反序列化就是从硬盘中把信息读到内存中.就这么简单,呵呵,现在来看下面的例子吧! 在这篇文章中我将使用BinaryFormatter序列化类Book作为例子,希望大家能从例子中深刻体会什么是序列化. 定义类Book:
public Book(string bookname, float bookprice, string bookauthor) 在类的上面增加了属性:Serializable.(如果不加这个属性,将抛出SerializationException异常). 通过这个属性将Book标志为可以序列化的.当然也有另一种方式使类Book可以序列化,那就是实行ISerializable接口了.在这里大家要注意了:Serializable属性是不能被继承的咯!!! 如果你不想序列化某个变量,该怎么处理呢?很简单,在其前面加上属性[NonSerialized] .比如我不想序列化 string author; 那我只需要 [NonSerialized] string author; 好了,现在就告诉大家怎么实现序列化: 我们使用namespace: using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; 首先创建Book实例,like this: Book book = new Book("Day and Night", 30.0f, "Bruce"); 接着当然要创建一个文件了,这个文件就是用来存放我们要序列化的信息了. FileStream fs = new FileStream(@"C:\book.dat", FileMode.Create); 序列化的实现也很简单,like this: BinaryFormatter formatter = new BinaryFormatter(); 很简单吧!现在我列出整个原代码,包括反序列化.
static void Main(string[] args) using(FileStream fs = new FileStream(@"C:ook.dat", FileMode.Create)) book = null; using(FileStream fs = new FileStream(@"C:ook.dat", FileMode.Open)) |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论