zoukankan      html  css  js  c++  java
  • 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它们相当于多了一步处理,将二进制值转换成相应的数据类型.

    发现自己的不足,善于利用找到的方法去扬长避短。行动起来。
  • 相关阅读:
    SQL Server 2008 Service Broker
    微软官网推Windows 7学习材料
    ASP.NET MVC Code and Slides for Best of Mix 09 Presentation
    DLINQ:SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM
    SQL Server 2008 Developer Training Kit
    TheBeerHouseASP.NET MVC范例
    SQL Server 2008 SP1
    LINQ: There is already an open DataReader associated with this Command which must be closed first
    Quartz.NET 1.0.1发布
    K2 Blackpearl的Outcomes Actions和Line Rule
  • 原文地址:https://www.cnblogs.com/rechen/p/5088012.html
Copyright © 2011-2022 走看看