网上有关“什么是内存流和文件流?”话题很是火热,小编也是针对什么是内存流和文件流?寻找了一些与之相关的一些信息进行分析 ,如果能碰巧解决你现在面临的问题,希望能够帮助到您 。
文件流 FileStream继承与Stream类,一个FileStream类的实例实际上代表一个文件流 ,使用FileStream类可以对文件系统上是文件进行读取、写入 、打开和关闭操作。与ioStream、sStream共同作为头文件构成IO标准库。
内存流 MemoryStream表示的是保存在内存中的数据流,由内存流封装的数据可以在内存中直接访问 。内存一般用于暂时缓存数据以降低应用程序对临时缓冲区和临时文件的需要。
引入内存流是因为内存流和字节数组虽然都位于程序缓冲区,但是具有不同特性。内存流相对于字节数组而言,具有流特有的特性 ,并且容量可自动增长,在数据加密以及对长度不定的数据进行缓存等场合,使用内存流比较方便。
扩展资料:
MemoryStream有多种构造函数如下:
1、public MemoryStream();该构造函数初始分配的容量大小为0 ,随着数据的不断写入,其容量可以不断地自动扩展 。
2 、public MemoryStream(byte[] buffer);根据字节数组buffer初始化,实例的容量大小规定为字节数组的长度。
3、public MemoryStream(int capacity);容量固定为capacity。
c# .net 使用stream 的copyto 方法无效?
从数据库中调出一个文件(文件在数据库中以二进制存储) ,转换成可以显示的
MemoryStream ms = new MemoryStream(bytes); // MemoryStream创建其支持存储区为内存的流 。
//MemoryStream属于System.IO类
ms.Position = 0;
Image img = Image.FromStream(ms);
ms.Close();
this.pictureBox1.Image = img;
首先:Stream.CopyTo要dotNet4.0以上才有。
当对文件操作,写入和复制时,你需要创建一个byte[]类型的buffer(因为涉及和磁盘交互)。你转换为数组就是相当于一个buffer. MemoryStream 实质上一个无法改变大小的字节数组的实例 ,这样造就了不能做为缓冲区使用,因而无法直接写入文件 。查看MSDN
你可以重写CopyTo方法,达到你想要的结果。
实例代码如下:
public?void?CopyTo(Stream?destination){
//?缓冲区默认大小
this.InternalCopyTo(destination,?81920);
}
private?void?InternalCopyTo(Stream?destination,?int?bufferSize)
{
byte[]?array?=?new?byte[bufferSize];
int?count;
while?((count?=?this.Read(array,?0,?array.Length))?!=?0)
{
destination.Write(array,?0,?count);
}
}
关于“什么是内存流和文件流? ”这个话题的介绍 ,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
本文来自作者[听雁]投稿,不代表名火号立场,如若转载,请注明出处:https://m.xyrmshs.cn/changshi/202512-577.html
评论列表(4条)
我是名火号的签约作者“听雁”!
希望本篇文章《什么是内存流和文件流?》能对你有所帮助!
本站[名火号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育
本文概览:网上有关“什么是内存流和文件流?”话题很是火热,小编也是针对什么是内存流和文件流?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。 文...