C#的FileStream類提供了最原始的字節級上的文件讀寫功能,但我們習慣於對字符串操作,於是StreamWriter和 StreamReader類增強了FileStream,它讓我們在字符串級別上操作文件,但有的時候我們還是需要在字節級上操作文件,卻又不是一個字節 一個字節的操作,通常是2個、4個或8個字節這樣操作,這便有了BinaryWriter和BinaryReader類,它們可以將一個字符或數字按指定 個數字節寫入,也可以一次讀取指定個數字節轉為字符或數字。
下面看一個實例:
BinaryWriter 和 BinaryReader 類用於讀取和寫入數據,而不是字符串。下面的代碼示例演示如何向新的空文件流 (Test.data) 寫入數據及從中讀取數據。在當前目錄中創建了數據文件之后,也就同時創建了相關的 BinaryWriter 和 BinaryReader,BinaryWriter 用於向 Test.data 寫入整數 0 到 10,Test.data 將文件指針置於文件尾。在將文件指針設置回初始位置后,BinaryReader 讀出指定的內容。
using System; using System.IO; class MyStream { private const string FILE_NAME = "Test.data"; public static void Main(String[] args) { // Create the new, empty data file. if (File.Exists(FILE_NAME)) { Console.WriteLine("{0} already exists!", FILE_NAME); return; } FileStream fs = new FileStream(FILE_NAME, FileMode.CreateNew); // Create the writer for data. BinaryWriter w = new BinaryWriter(fs); // Write data to Test.data. for (int i = 0; i < 11; i++) { w.Write( (int) i); } w.Close(); fs.Close(); // Create the reader for data. fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader(fs); // Read data from Test.data. for (int i = 0; i < 11; i++) { Console.WriteLine(r.ReadInt32()); } r.Close(); fs.Close(); } }
有關該類的成員參見
http://msdn.microsoft.com/zh-cn/library/system.io.binaryreader_members%28v=vs.80%29.aspx