使用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();
}
}