using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace 内存流的读写
{
class Program
{
static void Main(string[] args)
{
MemoryStream st = new MemoryStream(1024);//新建内存流
BinaryWriter bw = new BinaryWriter(st);//新建二进制写入控件,与内存流关联
Random rand = new Random();//新建随机数
for (int i = 0; i < 10; i++)
{
bw.Write(rand.NextDouble());//写入10个随机数
}
st.Seek(0, SeekOrigin.Begin);//把流移到最开始的位置
BinaryReader br = new BinaryReader(st);//新建二进制读取器,与内存流关联
for (int j = 0; j < 10; j++)
{
Console.WriteLine(br.ReadDouble());//读取二进制
}
br.Close();
st.Close();
bw.Close();
Console.ReadKey();
MemoryStream st1 = new MemoryStream(1000);//新建内存流
BinaryWriter bw1 = new BinaryWriter (st1);//与二进制写入器关联
bw1.Write("length-prefixed string");//将字符串写入内存流
char[] buffer = new char[1024];//字符串数组,作为临时缓冲区
String s = "13 Characters";//定义一个字符串
s.CopyTo(0, buffer, 0, 13);//将字符串拷贝到缓冲区
bw1.Write(buffer, 0, 13);//将字符串写入内存流
bw1.Write(buffer, 0, 13);//重复写入流
st1.Seek(0,SeekOrigin.Begin);//流回到开始的位置
BinaryReader br1 = new BinaryReader(st1);//新建二进制读取器与内存流关联
Console.WriteLine(br1.ReadString());//读取内存流数
Console.ReadKey();
br1.Read(buffer, 0, 13);//用内存读取器直接读取缓冲区中的数据
s = new String(buffer, 0, 13);
Console.WriteLine(s);
Console.ReadKey();
s = new String(br1.ReadChars(13));//用读取内存流中的数据
Console.WriteLine(s);
Console.ReadKey();
}
}
}