MemoryStream位于System.IO命名空间,为系统内存提供流式的读写操作。常作为其他流数据交换时的中间对象操作。
1、MemoryStream类封装一个字节数组,在构造实例时可以使用一个字节数组作为参数,但是数组的长度无法调整。使用默认无参数构造函数创建实例,可以使用Write方法写入,随着字节数据的写入,数组的大小自动调整。
2、在对MemoryStream类中数据流进行读取时,可以使用seek方法定位读取器的当前的位置,可以通过指定长度的数组一次性读取指定长度的数据。ReadByte方法每次读取一个字节,并将字节返回一个整数值。
3、UnicodeEncoding类中定义了Unicode中UTF-16编码的相关功能。通过其中的方法将字符串转换为字节,也可以将字节转换为字符串。 
MemoryStream 是一个特例,MemoryStream中没有任何非托管资源,所以它的Dispose不调用也没关系。托管资源.Net会自动回收
MemoryStream继承自Stream类。内存流的好处是指针可以晃来晃去,也就是支CanSeek,Position,Seek()。任意读其中一段。
CanRead     已重写。获取一个值,该值指示当前流是否支持读取。 
CanSeek     已重写。获取一个值,该值指示当前流是否支持查找。 
CanTimeout    获取一个值,该值确定当前流是否可以超时。(从 Stream 继承。) 
CanWrite     已重写。获取一个值,该值指示当前流是否支持写入。 
Capacity     获取或设置分配给该流的字节数。 这个是分配的字节数 
Length      已重写。获取用字节表示的流长度。这个是真正占用的字节数。 
Position      已重写。获取或设置流中的当前位置。 
ReadTimeout   获取或设置一个值,该值确定流在超时前尝试读取多长时间。 (从 Stream 继承。) 
WriteTimeout   获取或设置一个值,该值确定流在超时前尝试写入多长时间。 (从 Stream 继承。)
二、方法
BeginRead     开始异步读操作。 (从 Stream 继承。) 
BeginWrite    开始异步写操作。 (从 Stream 继承。) 
Close        关闭当前流并释放与之关联的所有资源(如套接字和文件句柄)。 (从 Stream 继承。) 
CreateObjRef   创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (从 MarshalByRefObject 继承。) 
Dispose      已重载。 
EndRead     等待挂起的异步读取完成。 (从 Stream 继承。) 
EndWrite      结束异步写操作。 (从 Stream 继承。) 
Flush        已重写。 重写 Stream.Flush 以便不执行任何操作。 
GetBuffer     返回从其创建此流的无符号字节数组。 是会返回所有分配的字节,不管用没用到。 
GetLifetimeService      检索控制此实例的生存期策略的当前生存期服务对象。 (从 MarshalByRefObject 继承。) 
InitializeLifetimeService   获取控制此实例的生存期策略的生存期服务对象。 (从 MarshalByRefObject 继承。) 
Read            已重写。 从当前流中读取字节块并将数据写入 buffer 中。 搞了好久才弄明白Read()方法的含义,第一个参数,是读取到的内               容要输出到的字节数组,第二个参数是放在第一个参数即要输出的数组的位置的偏移量,第三个参数是,要读取的字符数。 用               这个方法你可以任意读取一段需要的内存。注意,Read()方法是从当前流的Position属性的位置开始读,这就是为什么很多人               测试的时候,刚刚写入内存的数据,Read()方法无法读取到内容的原因,因为刚刚写入内存之后,位置恰好是在最后一位了。               Read()方法当然读不到。此方法强大之处在于,你可以从一个内存流中读出你想要的一个片段。 
ReadByte          已重写。 从当前流中读取一个字节。 
Seek            已重写。 将当前流中的位置设置为指定值。 
SetLength          已重写。 将当前流的长度设为指定值。 
Synchronized        在指定的 Stream 对象周围创建线程安全(同步)包装。 (从 Stream 继承。) 
ToArray          将整个流内容写入字节数组,而与 Position 属性无关。 
Write            已重写。 使用从缓冲区读取的数据将字节块写入当前流。 同样注意下,第二个参数是第一个参数数组的偏移量就可以了。 
WriteByte         已重写。 将一个字节写入当前流中的当前位置。 
WriteTo          将此内存流的整个内容写入另一个流中。

转载于:https://www.cnblogs.com/AaronBear/p/10880216.html

[转载]C# MemoryStream(内存流)相关推荐

  1. 字符串string和内存流MemoryStream及比特数组byte[]互转

    定义string变量为str,内存流变量为ms,比特数组为bt 1.字符串转比特数组 (1)byte[] bt=System.Text.Encoding.Default.GetBytes(" ...

  2. c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换

    字节数组byte[]与图片image之间的转化 字节数组转换成图片 public static Image byte2img(byte[] buffer) {MemoryStream ms = new ...

  3. .net 流(Stream) - 文件流、内存流、网络流

    一.文件流 FileStream FileStream流继承与Stream类,一个FileStream类的实例实际上代表一个文件流,使用FileStream类可以对文件系统上是文件进行读取.写入.打开 ...

  4. C#字符串、字节数组和内存流间的相互转换 - IT浪潮之巅

    定义string变量为str,内存流变量为ms,比特数组为bt 1.字符串=>比特数组 (1)byte[] bt=System.Text.Encoding.Default.GetBytes(&q ...

  5. Java核心类库-IO-字节数组流/内存流

    内存流(数组流): 把数据先临时存在数组中,待会再从数组中获取出来. 1. 字节内存流:ByteArrayInputStream/ByteArrayOutputStream 2. 字符内存流:Char ...

  6. linux编程 fmemopen函数打开一个内存流 使用FILE指针进行读写访问

    fmemopen()函数打开一个内存流,使你可以读取或写入由buf指定的缓冲区.其返回FILE*fp就是打开的内存流,虽然仍使用FILE指针进行访问,但其实并没有底层文件(并没有磁盘上的实际文件,因为 ...

  7. Mybatis拦截器 mysql load data local 内存流处理

    Mybatis 拦截器不做解释了,用过的基本都知道,这里用load data local主要是应对大批量数据的处理,提高性能,也支持事务回滚,且不影响其他的DML操作,当然这个操作不要涉及到当前所lo ...

  8. C#中数据流(文件流、内存流、网络流等)相关知识点梳理

    基本概念 C#中数据流的应用体现在方方面面,现在针其常用的几种类进行一次梳理. 数据流包括文件流(FileStream).内存流(MemoryStream).网络流(NetworkStream)以及读 ...

  9. C#内存流示例-----gt;用内存流来读取图片

    C#文件处理操作必须先导入命名空间:using System.IO; 背景:一个窗体.一个pictureBox.一个lable[没有选择图片,lable的text为"图片未选择"] ...

最新文章

  1. 详解深度学习中的Normalization,不只是BN(1)
  2. 记录一次nginx配置vhost的小bug
  3. java 反射 类变量_java反射机制取出model类的所有变量,以及value
  4. 远程调试运行在Resin上面的Web应用程序
  5. [JZOJ3293] 【SHTSC2013】阶乘字符串
  6. android 延时摄影,当「延时摄影」和「镜头慢放」结合,手机视频从未有如此质感……#Android&iOS...
  7. nginx部署前端代码
  8. creo5.0安装教程(图文详解)
  9. java项目 字典实现,java项目中数据字典的实现
  10. 通信专业实务(中级)
  11. pyecharts可视化画3D动态地球仪,世界地图,中国地图。
  12. 交通流预测爬坑记(三):使用pytorch实现LSTM预测交通流
  13. 习题 6.14 编一个程序,将两个字符串s1和s2比较,若s1大于s2,输出一个正数;若s1等于s2, 输出0;若s1小于s2,输出一个负数。不要用strcmp函数。两个字符串用gets函数输入。
  14. 高效的word转换成pdf转换器
  15. c语言坐标三角形判断,C语言输入三角形边长判断其类型并输出面积实例代码
  16. 代写硕士论文 计算机 代码,天大、厦大两硕士代写买卖论文被撤销学位
  17. java和大数据开发该选择哪个好就业?
  18. 继上篇,关于Rxjava,让你知道什么叫“大海无量”
  19. CANoe和CANoe.DiVa关于通信测试的简略汇总
  20. 如何批量创建文件夹?

热门文章

  1. 小米手机将终结卡顿?未来所有机型将升级新MIUI
  2. 每天都用微信聊天,但你可能不知道它还隐藏着这些超实用的功能
  3. 剑指offer之Runnable和Callable的区别
  4. Python使用装饰器和线程限制函数执行时间的方法
  5. a king读后感 love of the_A华语电影高清合集
  6. html背景图适应div_CSS实现背景图片屏幕自适应
  7. cad lisp 两侧偏移并删除_CAD做钣金件展开的原理你知道吗?
  8. 【Flink】 collector 非常慢 一次尴尬的 排查错误方向 chain 与 不chain 的 区别
  9. 【Elasticsearch】es 插件类型
  10. 95-846-820-源码-网络-Flink 网络传输优化技术