緩沖區是內存中的字節塊,用於緩存數據,從而減少對操作系統的調用失敗次數。緩沖區可提高讀取和寫入性能。使用緩沖區可進行讀取或寫入操作,但不能同時進行這兩種操作。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();
}
}