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