C#中的 BinaryReader 和 BinaryWriter 类

转载自:https://blog.csdn.net/qq_42351033/article/details/88088480
前面的博客我们已经了解到:
FileStream 类为我们提供了字节级上的文件读写功能,但开发中我们习惯于对字符串操作,于是 StreamReader 和 StreamWriter 类增强了 FileStream ,它让我们可以在字符串级别上操作文件。
可为什么会有 BinaryReader 和 BinaryWriter类呢?
因为有的时候我们还是需要在字节级上操作文件,但又不是一个字节一个字节这样去操作,通常是2个、4个或8个字节这样操作,这便有了 BinaryReader和 BinaryWriter 类。
它们可以一次读取指定数字的字节,转为字符或数字;也可以将一个字符或数字,按指定数字的字节写入。

一:BinaryReader类
用途:用特定的编码,将基元数据类型读作二进制值。

常用方法:
1)Dispose
用法:释放 System.IO.BinaryReader 类的当前实例所使用的所有资源。
2)Close
用法:关闭当前阅读器及基础流。
3)Read(byte [] buffer, int index, int count)
用法:从字节数组中的指定点开始,从流中读取指定的字节数,返回类型为 int
参数 buffer:将数据读入的缓冲区。
参数 index:缓冲区中的起始点,在该处开始读入缓冲区。
参数 count:要读取的字节数。

除了这几个方法,还有 ReadByte,ReadBytes,ReadInt32,ReadString等方法,方法参数都有释义,用到了哪个可以 F12 自己进去看看就行了。

代码实例:
声明路径:string path = “D:/Stream/IO.txt”;

using (FileStream fs=new FileStream(path,FileMode.Open,FileAccess.Read))
{
   BinaryReader br = new BinaryReader(fs);
   //以二进制方式读取文件中的内容  
   bool b = br.ReadBoolean();
   double d = br.ReadDouble();
   float f = br.ReadSingle();
   int i = br.ReadInt32();
   string s = br.ReadString();
   //打印每个值
   Console.WriteLine("{0},{1},{2},{3},{4}",b,d,f,i,s);
   //关闭流
   br.Close();
   fs.Close();
}

特别注意:文件里的内容会影响到输出结果,我第一次测试的时候就报了异常:System.IO.EndOfStreamException:已到达流的结尾。

二:BinaryWriter类
用法:BinaryWriter 类以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。
常用方法:
1)Close
用法:释放 System.IO.BinaryWriter 类的当前实例所使用的所有资源。
2)Write(参数类型 参数名)
用法:将值写入当前流。
该函数有18个重载,常用的参数类型有 string,int,byte,float,bool等。

代码实例:
声明路径:string path = “D:/Stream/IO.txt”;

using (FileStream fs=new FileStream(path,FileMode.OpenOrCreate))
{
    BinaryWriter bw=new BinaryWriter(fs);
    //以二进制方式向创建的文件中写入内容   
    bw.Write(588);              //  整型  
    bw.Write(58.8f);            // 浮点型  
    bw.Write(58.8);             // double型  
    bw.Write(true);             // 布尔型  
    bw.Write("程序人生道可道");  // 字符串型  
    //关闭流
    bw.Close();
    fs.Close();
}

你可能感兴趣的:(C#)