【原創】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方法運行截圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM