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方法運行截圖