BufferedStream类,可在另一流上添加并读取一个缓冲区,继承Stream抽象类。
缓冲区是内存中的字节块,用于缓存数据,从而减少对操作系统的调用失败次数(处理大文件速度快)。
缓冲区可提高读取和写入性能,使用缓冲区可进行读取或写入操作,但不能同时进行这两种操作。
为了让网友更好的认识和理解Stream类,新增了类关系图。后续会继续补充MemoryStream,FileStream。
//1.需要用BufferedStream,需要先创建一个Stream流对象。
//注:OpenWrite打开准备写入文件 OpenReader(对应Write方法) 打开准备读取文件(对应Reader方法)
//2.创建好流对象后,将这些对象作为参数传递给BufferedStream类的构造函数,创建BufferedStream实例
//3.创建了BufferedStream对象后,可以用该对象调用Read()和Write()方法,实现数据的读写
//Write 方法:将字节复制到缓冲流,并将缓冲流内的当前位置前进写入的字节数。
//Read 方法:将字节从当前缓冲流复制到数组。
//Seek 方法:设置当前缓冲流中的位置。
//4.最后一定要清空缓冲区,以确保数据全部写入文件。
完整代码:
static void Main(string[] args)
{
Console.WriteLine("-------开始工作-------");
//UserBufferStreamWrite();
UserBufferStreamRead();
Console.WriteLine("-------开始结束-------");
Console.ReadKey();
}
private static void UserBufferStreamRead()
{
Stream instream = File.OpenRead(@"E:/20120214.txt");
BufferedStream bfs = new BufferedStream(instream);
byte[] buffer = new byte[1024];
while (bfs.Read(buffer, 0, buffer.Length)>0)
{
Console.WriteLine(Encoding.GetEncoding("UTF-8").GetString(buffer));
}
bfs.Flush();
bfs.Close();
instream.Close();
}
private static void UserBufferStreamWrite()
{
Stream instream = File.OpenWrite(@"E:/20120214.txt");
BufferedStream bfs = new BufferedStream(instream);
for (int i = 0; i < 10; i++)
{
byte[] buff = new UTF8Encoding().GetBytes(DateTime.Now.ToLongTimeString() + "\r\n");
bfs.Write(buff, 0, buff.Length);
System.Threading.Thread.Sleep(500);
}
bfs.Flush();
bfs.Close();
instream.Close();
}
代码运行结果截图:
上图为:UserBufferStreamWrite方法运行截图
上图为:UserBufferStreamRead方法运行截图