C# 使用 MemoryStream 将数据写入内存
2016-07-14 16:22
906 查看
转自:http://blog.csdn.net/andrew_wx/article/details/6629951
常用的MemoryStream构造函数有以下3种。
1:MemoryStream() 该构造函数初始分配容量大小为0字节,随着数据的不断写入,其容量可以不断的自动扩展。一般在不确定数据内容大小的时候应用这种形式。
2:MemoryStream(byte[]) 和 MemoryStream 的无参数构造函数不同,通过该构造数的 MemoryStream 实例根据 byte 类型的字节数组进行初始化,并且实例的容量大小固定为字节数组的长度。由于实例的容量不能扩展,该构造函数一般用于数据不发生变化的场合。
3:MemoryStream(int capacity) 通过该构造函数创建初始容量大小为 capacity 的实例。并且实例容量大小可扩展。
完整代码如下:
引入命名空间:
[csharp] view
plain copy
print?
using System.IO;
完整代码:
[csharp] view
plain copy
print?
namespace MemoryStreamApp
{
class Program
{
static void Main(string[] args)
{
//构造MemoryStream实例,并输出初始分配容量及使用大小
MemoryStream mem = new MemoryStream();
Console.WriteLine("初始分配容量:{0}" , mem.Capacity);
Console.WriteLine("初始使用量:{0}" , mem.Length);
//将待写入的数据从字符串转换为字节数组
UnicodeEncoding encoder = new UnicodeEncoding();
byte[] bytes = encoder.GetBytes("新增数据");
//向内存流中写入数据
for (int i = 1; i < 4; i++)
{
Console.WriteLine("第{0}次写入新数据", i);
mem.Write(bytes, 0, bytes.Length);
}
//写入数据后 MemoryStream 实例的容量和使用大小
Console.WriteLine("当前分配容量:{0}",mem.Capacity);
Console.WriteLine("当前使用量:{0}",mem.Length);
Console.ReadLine();
}
}
}
该程序运行效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/23/9495eecd937fbe149648f8bfde91e486.gif)
若以上代码无法正常编译,可下载鄙人上传的项目文件:http://download.csdn.net/source/3465990
常用的MemoryStream构造函数有以下3种。
1:MemoryStream() 该构造函数初始分配容量大小为0字节,随着数据的不断写入,其容量可以不断的自动扩展。一般在不确定数据内容大小的时候应用这种形式。
2:MemoryStream(byte[]) 和 MemoryStream 的无参数构造函数不同,通过该构造数的 MemoryStream 实例根据 byte 类型的字节数组进行初始化,并且实例的容量大小固定为字节数组的长度。由于实例的容量不能扩展,该构造函数一般用于数据不发生变化的场合。
3:MemoryStream(int capacity) 通过该构造函数创建初始容量大小为 capacity 的实例。并且实例容量大小可扩展。
完整代码如下:
引入命名空间:
[csharp] view
plain copy
print?
using System.IO;
完整代码:
[csharp] view
plain copy
print?
namespace MemoryStreamApp
{
class Program
{
static void Main(string[] args)
{
//构造MemoryStream实例,并输出初始分配容量及使用大小
MemoryStream mem = new MemoryStream();
Console.WriteLine("初始分配容量:{0}" , mem.Capacity);
Console.WriteLine("初始使用量:{0}" , mem.Length);
//将待写入的数据从字符串转换为字节数组
UnicodeEncoding encoder = new UnicodeEncoding();
byte[] bytes = encoder.GetBytes("新增数据");
//向内存流中写入数据
for (int i = 1; i < 4; i++)
{
Console.WriteLine("第{0}次写入新数据", i);
mem.Write(bytes, 0, bytes.Length);
}
//写入数据后 MemoryStream 实例的容量和使用大小
Console.WriteLine("当前分配容量:{0}",mem.Capacity);
Console.WriteLine("当前使用量:{0}",mem.Length);
Console.ReadLine();
}
}
}
该程序运行效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/23/9495eecd937fbe149648f8bfde91e486.gif)
若以上代码无法正常编译,可下载鄙人上传的项目文件:http://download.csdn.net/source/3465990
相关文章推荐
- 《C#高级编程》读书笔记(九):异步编程
- NET 2.0(C#)调用ffmpeg处理视频的方法
- 开始整视频转为FLV的C#开发了
- C#手机充值系统开发(基于聚合数据)
- LinkedHashMap在 c#中的使用
- 设置大小写键盘 C#
- C#基础-1:访问控制符、静态与非静态、参数传递
- C#获取枚举的描述
- c# 参数 params ,ref ,out
- SSO-C#跨域单点登录(二)
- 加加减减(你真的懂++--吗) C#
- C#深入浅出全接触(五)
- c# dictionary 给某键值赋值之前是否一定要add此键值
- C#/.net学习---字符串处理的各种方法实例
- C#中DataTable中的Compute方法使用收集
- C#中BASE64和图片相互转换
- C# 利用发射动态创建泛型类型的对象,泛型类型支持带惨的构造函数
- C#使用 DirectX SDK 9做视频播放器 并在视频画线添加文字 VMR9
- C#new和override的区别
- C#/.net学习-----C#基础知识-对象和类型