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