和FileStream一样,MemoryStream和BufferedStream都派生自基类Stream,因此它们有很多共同的属性和方法,但是每一个类都有自己独特的用法。这两个类都是实现对内存进行数据读写的功能,而不是对持久性存储器进行读写。

读写内存-MemoryStream类

MemoryStream类用于向内存而不是磁盘读写数据。MemoryStream封装以无符号字节数组形式存储的数据,该数组在创建MemoryStream对象时被初始化,或者该数组可创建为空数组。可在内存中直接访问这些封装的数据。内存流可降低应用程序中对临时缓冲区和临时文件的需要。下表列出了MemoryStream类的重要方法:

Read():读取MemoryStream流对象,将值写入缓存区。

ReadByte():从MemoryStream流中读取一个字节。

Write():将值从缓存区写入MemoryStream流对象。

WriteByte():从缓存区写入MemoytStream流对象一个字节。

Read方法使用的语法如下:

mmstream.Read(byte[] buffer,offset,count)

其中mmstream为MemoryStream类的一个流对象,3个参数中,buffer包含指定的字节数组,该数组中,从offset到(offset +count-1)之间的值由当前流中读取的字符替换。Offset是指Buffer中的字节偏移量,从此处开始读取。Count是指最多读取的字节数。Write()方法和Read()方法具有相同的参数类型。

MemoryStream类的使用实例:

using System;

using System.IO;

using System.Text;

class program{

static void Main()

{

int count;

byte[] byteArray;

char[] charArray;

UnicodeEncoding uniEncoding=new UnicodeEncoding();

byte[] firstString=uniEncoding.GetBytes("努力学习");

byte[] secondString=uniEncoding.GetBytes("不做C#中的菜鸟");

using (MemoryStream memStream=new MemoryStream(100))

{

memStream.Write(firstString,0,firstString.Length);

count=0;

while(count

{

memStream.WriteByte(secondString[count++]);

}

Console.WriteLine("Capacity={0},Length={1},Position={2}\n",memStream.Capacity.ToString(),memStream.Length.ToString(),memStream.Position.ToString());

memStream.Seek(0, SeekOrigin.Begin);

byteArray=new byte[memStream.Length];

count=memStream.Read(byteArray,0,20);

while(count

{

byteArray[count++]=Convert.ToByte(memStream.ReadByte());

}

charArray=new char[uniEncoding.GetCharCount(byteArray,0,count)];

uniEncoding.GetDecoder().GetChars(byteArray,0,count,charArray,0);

Console.WriteLine(charArray);

Console.ReadKey();

}

}

}

在这个实例代码中使用了using关键字。注意:

using 关键字有两个主要用途:

作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。

例如:using System;

作为语句,用于定义一个范围,在此范围的末尾将释放对象。

using(Connection conn=new Connection(connStr))

{

}

//使用using关键字可及时销毁对象

MemoryStream.Capacity 属性 取得或设定配置给这个资料流的位元组数目。

MemoryStream.Position 属性 指定当前流的位置。

MemoryStream.Length 属性获取用字节表示的流长度。

SeekOrigin()是一个枚举类,作用设定流的一个参数。

SeekOrigin.Begin我得理解就是文件的最开始,“0”是偏移,表示跳过0个字节。写2就是跳过2个字节。

MemoryStream类通过字节读写数据。本例中定义了写入的字节数组,为了更好的说明Write和WriteByte的异同,在代码中声明了两个byte数组,其中一个数组写入时调用Write方法,通过指定该方法的三个参数实现如何写入。另一个数组调用了WriteByte方法,每次写入一个字节,所以采用while循环来完成全部字节的写入。写入MemoryStream后,可以检索该流的容量,实际长度,当前流的位置,将这些值输出到控制台。通过观察结果,可以确定写入MemoryStream流是否成功。

调用Read和ReadByte两种方法读取MemoryStream流中的数据,并将其进行Unicode编码后输出到控制台。

java memorystream 包_C#使用MemoryStream类读写内存相关推荐

  1. java 获取包下的所有类,附完整源码和测试代码

    java 获取包下的所有类,完整Java代码如下: package com.example.demo.util;import java.io.File; import java.io.FileFilt ...

  2. 使用MemoryStream类读写内存

    MemoryStream和BufferedStream都派生自基类Stream,因此它们有很多共同的属性和方法,但是每一个类都有自己独特的用法.这两个类都是实现对内存进行数据读写的功能,而不是对持久性 ...

  3. Java.math包中常用的类

    Java.math包 Java.math.BigDecimal类 Java.math.BigInteger类实例 Java.math.MathContext类实例

  4. Java.io包中常用的类

    Java.io包 Java.io.BufferedInputStream类实例 Java.io.BufferedOutputStream类使用例子 Java.io.BufferedReader类 Ja ...

  5. Java.util包中常用的类

    Java.util包 Java.util.ArrayDeque类 Java.util.ArrayList类 Java.util.Arrays类 Java.util.BitSet类 Java.util. ...

  6. java.lang包中的常用类

    java.lang包 java.lang.Boolean类 java.lang.Byte类 java.lang.Character java.lang.Character.Subset类 java.l ...

  7. java.lang包—类加载器ClassLoader类

    注意: 类加载器的知识与JVM内存模型紧密相连,要学好这块的知识,一定要掌握JVM的内存模型. 关于JVM内存模型,推荐阅读:JVM-内存模型JMM 目录 一.什么是ClassLoader? 二.类加 ...

  8. java一个包有两个类_java一个包包含多个类 java 类包含类

    一个java工程可以有多个包含main方法的类吗? 每一个java文件都会有一个public static void main(String[] args)作为程序作为入口,一个类有且只有一个,但是可 ...

  9. java memorystream 包_C#到Java:Base64String,MemoryStream,GZipStream

    我有一个在.NET中被gzip压缩的Base64字符串,我想将它转换回Java中的字符串.我正在寻找C#语法的一些Java等价物,特别是: > Convert.FromBase64String ...

最新文章

  1. VS .NET(C#)四舍五入方法(转)
  2. 趣学python3(40)--TCP服务器和客户端(socketserver类)
  3. 队列的基本操作c语言代码大全,数据结构――队列(循环队列)的基本操作(实现链队列逐一取出c语言代码)...
  4. 【注意】LeetCode 2. Add Two Numbers
  5. 持续图片滚动字幕html,使用JavaScript实现连续滚动字幕效果的方法
  6. 类/对象/构造函数/析构函数
  7. 字根校对软件,中文校对行业的一匹黑马!
  8. win10简单方法安装杜比v4音效!win10 1909适用!
  9. 转 常见视频编码方式以及封装格式
  10. python sorted方法
  11. 谷歌翻译(英文PDF文档翻译成中文,免费无限制)
  12. mac 谷歌浏览器翻译问题
  13. ABP VNext学习日记30
  14. 1.初识elasticsearch
  15. 数据分析思维(《数据分析思维:分析方法和业务知识》)
  16. Chatper 16 Instrumental Variable Estimation
  17. Unity3D摄像机远、近切面绘制
  18. el-table 排序
  19. 去哪儿旅行携程旅行淘宝旅行移动端产品分析报告
  20. # 2014年蓝桥杯真题CC++B组

热门文章

  1. 中国真空断续器市场现状研究分析与发展前景预测报告(2022)
  2. OAuth2实现单点登录SSO
  3. uniapp组件-uni-rate评分
  4. 网页内嵌编辑器ueditor的使用
  5. html控件透明与背景透明
  6. 【存储】RAID0、RAID1、RAID3、RAID5、RAID6、混合RAID10、混合RAID50
  7. Excel导出模板加数据时,下拉框丢失解决方案
  8. ARM Cortex-A 系列编程指南之ARMv8-A(AArch64浮点与NEON)
  9. 世界坐标系,相机坐标系,图像坐标系,像素坐标系转换
  10. DXP画图快捷键等资料