BinaryReader 、BinaryWriter是方便用二进制方式读写int,double,string之类的数据

 BinaryWriter类:MSDN以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。

这个MSDN的解释,是不是说BinaryWriter类是将数据以二进制的形式写入文件,在文件中显示的是0、1组成的东西?

再看MSDN的这个例子:

class MyStream
{
    private const string FILE_NAME = "Test.data";

    public static void Main()
    {
        if (File.Exists(FILE_NAME))
        {
            Console.WriteLine("{0} already exists!", FILE_NAME);
            return;
        }
        using (FileStream fs = new FileStream(FILE_NAME, FileMode.CreateNew))
        {
            using (BinaryWriter w = new BinaryWriter(fs))
            {              
                for (int i = 0; i < 11; i++)
                {
                    w.Write(i);
                }
            }
        }
        using (FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read))
        {
            using (BinaryReader r = new BinaryReader(fs))
            {
                for (int i = 0; i < 11; i++)
                {
                    Console.WriteLine(r.ReadInt32());
                }
            }
        }
    }
}

 

 



上面的代码,想文件写入0----10的数字,再读取出来,读出来也是0----10的数字,。整个过程和StreamWriter和StreamReader不是一样吗?能说明BinaryReader 有什么特殊吗?怎么体现出它是以二进制写入文件的呢?
这几天对BinaryReader 、BinaryWriter,简直不懂...

当存储一些特殊类型时,就可以利用BinaryReader ,你比如说图片

举个例子,在sql数据库中存储图片,怎么办?虽然数据库中有Image类型,但是Image数据类型存储的是长度不确定的二进制数据,那么在存储图片到数据库的时候,就要先将图片转化为二进制流,然后存入Image

调取图片的时候再以流的形式读出转换成图片

而对于一般的类型,字符串等都有相应的存储类型,也没必要以流读取

个人觉得只是为数据的通用存储以及读取提供了一种便利。

 

 

BinaryReader 、BinaryWriter其实只是方便你用二进制方式读写int,double,string之类的数据,

StreamWriter/StreamReader和BinaryReader/BinaryWriter完全不同,StreamWriter/StreamReader操作的文件是文本文件,通常是txt文件,你可以用记事本来看得到你写入的数据,同样你用记事本生成的txt文件也能被StreamReader读取,

但BinaryReader/BinaryWriter操作的文件是二进制文件,不是文本文件,你可以用记事本打开BinaryWriter生成的文件,你会发现都是乱码,它并不是你想象的由0,1等字符组成的文件,呵呵,

 

BinaryReader类:MSDN,用特定的编码将基元数据类型读作二进制
从MSDN的解释,BinaryReader是将数据读成二进制值,那读出来就应该是二进制值啊,只有0、1那种,怎么又是字符串呢?

BinaryReader有ReadByte,ReadBytes,Read方法,它们读取出来的是原生态的二进制值,像ReadInt32,ReadDouble它们相当于多了一步处理,将二进制值转换成相应的数据类型.

 

posted @ 2015-12-30 10:37  星雷热忱  阅读(5353)  评论(0编辑  收藏  举报