C#使用BufferedStream類讀寫緩沖區


緩沖區是內存中的字節塊,用於緩存數據,從而減少對操作系統的調用失敗次數。緩沖區可提高讀取和寫入性能。使用緩沖區可進行讀取或寫入操作,但不能同時進行這兩種操作。BufferedStream類用於讀寫緩沖區。

創建BufferedStream對象的語法如下:

<訪問修飾符> BufferedStream 對象名=new BufferedStream(Stream stname);

<訪問修飾符> BufferedStream 對象名=new BufferedStream(Stream stname,int size);

這兩種方法都可以創建BufferedStream流對象,前者只有一個參數——Stream實例,后者在此基礎上增加了表示緩沖區大小的整型數據。默認情況下,緩沖區的大小是4096字節。

BufferedStream對象是包裹已經創建的現有流對象而形成的,要使用BufferedStream,需要用BufferedStream,需要先創建一個Stream流對象。創建方法如下:

Stream instream=File.OpenRead(文件名);
stream outstream=file.OpenWrite(文件名);

創建好流對象后,將這些對象作為參數傳遞給BufferedStream類的構造函數,創建BufferedStream實例。示例代碼如下:

BufferedStream bfs=new BufferedStream(instream);
bufferedStream objbfs=new BufferedStream(outstream);

創建了BufferedStream對象后,可以用該對象調用Read()和Write()方法,實現數據的讀寫。示例代碼如下:

int byteread=bfs.Read(buffer,0,20);
objbfs.Write(buffer,0,byteread);

最后一定要清空緩沖區,以確保數據全部寫入文件。
bfs.Flush();
objbfs.Flush();

BufferedStream.Write 方法:將字節復制到緩沖流,並將緩沖流內的當前位置前進寫入的字節數。
BufferedStream.Read 方法:將字節從當前緩沖流復制到數組。
BufferedStream.Seek 方法:設置當前緩沖流中的位置。

using System;
using System.IO;
using System.Text;
class BufferedStreamTest
{
private static void AddText(BufferedStream bs, string value)
{
   byte[]info = new UTF8Encoding().GetBytes(value);
   bs.Write(info, 0, info.Length);
}
public static void Main()
{
   string path = "F:\\bsfile.txt";
   if (File.Exists(path))
    File.Delete(path);
   BufferedStream bs = new BufferedStream(File.Create(path));
   AddText(bs, "The first line ");
   AddText(bs, "123456789\r\n");
   AddText(bs, "The second line\r\n");
   AddText(bs, "Another line");
   bs.Close();
   bs = new BufferedStream(File.OpenRead(path));
   byte[]b = new byte[bs.Length];
   UTF8Encoding utf8 = new UTF8Encoding();
   while (bs.Read(b, 0, b.Length) > 0)
    Console.WriteLine(utf8.GetString(b));
    Console.ReadKey();
}
}


免責聲明!

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



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