如何 网站收录,wordpress小程序获取页面,做视频的网站多少钱,网站推广公司招聘使用MemoryStream和FileStream编程访问文件是通过文件流对象进行的#xff0c;当应用程序需要访问文件时#xff0c;必须先创建一个文件流对象#xff0c;此流对象和文件是一一对应关系。在.NET中#xff0c;使用抽象基类System.IO.Stream代表流#xff0c;它提供Read和Wr… 使用MemoryStream和FileStream编程访问文件是通过文件流对象进行的当应用程序需要访问文件时必须先创建一个文件流对象此流对象和文件是一一对应关系。在.NET中使用抽象基类System.IO.Stream代表流它提供Read和Write两个方法。由于数据流的有序性因此流对象还有一个读写指针为此Stream类还有一个Seek方法用于移动读写指针。FileStream对象的数据来自文件而MemoryStream对象的数据来自内存缓冲区。这两个类都继承自Stream类。MemoryStream的数据来自内存中的一块连续区域这块区域称为“缓冲区(Buffer)”。可以把缓冲区看成一个数组每个数组元素可以存放一个字节的数据。在创建MemoryStream对象时可以指定缓冲区的大小并且可以在需要的时候更改。 //字节数组 byte[] buffer new byte[600];//填充字节数组 private void CreateExampleData() { for(int i0; i600; i) { //byte类型的数最大不能超过255用256取模实现 buffer[i] (byte)(i%256); } }内存流的基本使用方法 private void OnTestMemory() { //创建测试数据 CreateExampleData(); //创建内存流对象初始分配50字节的缓冲区 MemoryStream mem new MemoryStream(50); //向内存流中写入字节数组的所有数据 mem.Write(buffer,0,buffer.GetLength(0)); MessageBox.Show(写入数据后的内存流长度 mem.Length.ToString()); MessageBox.Show(分配给内存流的缓冲区大小 mem.Capacity.ToString()); mem.SetLength(550); MessageBox.Show(调用SetLength方法后的内存流长度 mem.Length.ToString()); mem.Capacity 620;//此值不能小于Length属性 MessageBox.Show(调用Capacity方法后缓冲区大小 mem.Capacity.ToString()); //将读写指针移到距流开头10个字节的位置 mem.Seek(10,SeekOrigin.Begin); MessageBox.Show(mem.ReadByte().ToString()); mem.Close(); }内存流的Length属性代表了其中存放的数据的真实长度而Capacity属性则代表了分配给内存流的内存空间大小。可以使用字节数组创建一个固定大小的MemoryStream MemoryStream mem new MemoryStream(buffer);这时无法再设置Capacity属性的大小。还可以创建只读的内存流对象。 MemoryStream mem new MemoryStream(buffer,false);FlieStream用于存取文件。创建文件并写入内容 //创建一个新文件 FileStream fsForWrite new FileStream(test.data,FileMode.Create); try { //写入一个字节 fsForWrite.WriteByte(100); CreateExampleData(); //将字节数组写入文件 fsForWrite.Write(buffer,0,buffer.GetLength(0)); } catch(Exception ex) { MessageBox.Show(ex.Message); } finally { //关闭文件 fsForWrite.Close(); }打开文件并读取内容 private void ReadFromFile() { FileStream fsForRead new FileStream(test.data,FileMode.Open); try { //读入一个字节 MessageBox.Show(文件的第一个字节为fsForRead.ReadByte().ToString()); //读写指针移到距开头10个字节处 fsForRead.Seek(10,SeekOrigin.Begin); byte[] bs new byte[10]; //从文件中读取10个字节放到数组bs中 fsForRead.Read(bs,0,10); } catch(Exception ex) { MessageBox.Show(ex.Message); } finally { fsForRead.Close(); } }如果一个程序退出了但它打开的文件没有被关闭将导致其他程序无法修改或删除此文件。 转载于:https://www.cnblogs.com/MikeChen/archive/2010/05/28/1746005.html