C#使用BinaryWriter和BinaryReader读写文件

C#的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) + " ");
    }
}


上一篇: ASP读取JPG图像Exif信息类
下一篇: jquery.treeview.async简介
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 10754
发表评论
登录后再发表评论!