FileStream类提供了最原始的字节级上的文件读写功能,但我们习惯于对字符串操作,于是StreamWriter和StreamReader类增强了FileStream,它让我们在字符串级别上操作文件,但有的时候我们还是需要在字节级上操作文件,却又不是一个字节一个字节的操作,通常是2个、4个或8个字节这样操作,这便有了BinaryWriter和BinaryReader类,它们可以将一个字符或数字按指定个数字节写入,也可以一次读取指定个数字节转为字符或数字:
//写入
using (FileStream fs = new FileStream(@"D:\Binary", FileMode.Create))
{
using (BinaryWriter writer = new BinaryWriter(fs))
{
writer.Write(true);
writer.Write((byte)1); //用1个字节写入
writer.Write((short)2); //用2个字节写入
writer.Write((int)3); //用4个字节写入
writer.Write((long)4); //用8个字节写入
writer.Write(new byte[] { 0xFF, 0xD9 });
}
}
//读取
using (FileStream fs = new FileStream(@"D:\Binary", FileMode.Open, FileAccess.Read))
{
using (BinaryReader reader = new BinaryReader(fs))
{
Console.WriteLine(reader.ReadBoolean());
Console.WriteLine(reader.ReadByte()); //一次读取1个字节转为byte
Console.WriteLine(reader.ReadInt16()); //一次读取2个字节转为short
Console.WriteLine(reader.ReadInt32()); //一次读取4个字节转为int
Console.WriteLine(reader.ReadInt64()); //一次读取8个字节转为long
byte[] b = reader.ReadBytes(2);
for (int i = 0; i < b.Length; i++)
Console.Write(Convert.ToString(b[i], 16) + " ");
}
}
本文作者:网友 来源: http://www.mzwu.com/
CIO之家 www.ciozj.com 微信公众号:imciow