使用I/O流操作二進制文件時要用到BinaryWriter類和BinartReader類
1.BinaryWriter類
BinaryWriter類以二進制形式將基元類型寫入流,並支持用特定的編碼寫入字符串。
常用的方法:
Close 關閉當前的BinaryWriter和基礎流
Seek 設置當前流中的位置
Write 將值寫入當前流
2.BinartReader類
BinartReader類用特定的編碼將基元數據類型讀作二進制值。
常用的方法:
Close 關閉當前閱讀器及基礎流
Read 從基礎流中讀取字符,並提升流的當前位置
ReadBytes 從當前流將count個字節讀入字節數組,並使當前位置提升count個字節
ReadInt32 從當前流中讀取4個字節有符號整數,並使流的當前位置提升4個字節
ReadString 從當前流讀取一個字符串。字符串有長度前綴,一次7為地被編碼為整數
3.實例代碼:演示如何對二進制文件進行寫入和讀取
private void button1_Click(object sender, EventArgs e) { if (textBox1.Text == string.Empty) { MessageBox.Show("要寫入的文件內容不能為空"); } else { //設置保存文件的格式 saveFileDialog1.Filter = "二進制文件(*.dat)|*.dat"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { //使用“另存為”對話框中輸入的文件名實例化FileStream對象 FileStream myStream = new FileStream(saveFileDialog1.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite); //使用FileStream對象實例化BinaryWriter二進制寫入流對象 BinaryWriter myWriter = new BinaryWriter(myStream); //以二進制方式向創建的文件中寫入內容 myWriter.Write(textBox1.Text); //關閉當前二進制寫入流 myWriter.Close(); //關閉當前文件流 myStream.Close(); textBox1.Text = string.Empty; } } } private void button2_Click(object sender, EventArgs e) { //設置打開文件的格式 openFileDialog1.Filter = "二進制文件(*.dat)|*.dat"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = string.Empty; //使用“打開”對話框中選擇的文件名實例化FileStream對象 FileStream myStream = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read); //使用FileStream對象實例化BinaryReader二進制寫入流對象 BinaryReader myReader = new BinaryReader(myStream); if (myReader.PeekChar() != -1) { //以二進制方式讀取文件中的內容 textBox1.Text = myReader.ReadString(); } //關閉當前二進制讀取流 myReader.Close(); //關閉當前文件流 myStream.Close(); } }