【原创】C#认识/理解/运用 BufferedStream

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方法运行截图

原文地址:https://www.cnblogs.com/zhxhdean/p/2352311.html