用途
用特定的编码,将基元数据类型读作二进制值。
常用方法
Dispose
作用:释放 System.IO.BinaryReader 类的当前实例所使用的所有资源。
Close
作用:关闭当前阅读器及基础流。
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 类以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。
常用方法
Close
作用:释放 System.IO.BinaryWriter 类的当前实例所使用的所有资源。
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();
}
打印后的结果在 IO.txt 文件里其实是乱码的,因为是以二进制写入的,这里只是介绍一下用法。
FileStream 类为我们提供了字节级上的文件读写功能,但开发中我们习惯于对字符串操作。
于是 StreamReader 和 StreamWriter 类增强了 FileStream ,它让我们可以在字符串级别上操作文件。
可为什么会有 BinaryReader 和 BinaryWriter类呢?
因为有的时候我们还是需要在字节级上操作文件,但又不是一个字节一个字节这样去操作,通常是2个、4个或8个字节这样操作,这便有了 BinaryReader和 BinaryWriter 类。
它们可以一次读取指定数字的字节,转为字符或数字;也可以将一个字符或数字,按指定数字的字节写入。
如果这篇博客有幸帮到了您,欢迎点击下方链接,和更多志同道合的伙伴一起交流,一起进步。
结束语