首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

BinaryWriter、BinaryReader 为何得不到相应的数据值?该怎么解决

2012-02-12 
BinaryWriter、BinaryReader 为何得不到相应的数据值??我是按照教程来得有很多东西,都没法实现!如:插入数据

BinaryWriter、BinaryReader 为何得不到相应的数据值??
我是按照教程来得有很多东西,都没法实现!    
 
  如:插入数据     name:11     age:22     phone:33     address:44    
  得到的却是:     11     11     11     11    
  还有:读写器     pw     为什么没有:WriteString     方法呢??    
 
 
                      struct     Record         //     通讯录的记录格式    
                      {    
                                              public     string     name;    
                                              public     UInt16     age;    
                                              public     string     phone;    
                                              public     string     address;    
                      };        
 
                      class     Phone    
                      {    
                                              FileStream     f_srm;    
                                              string     s_filename;    
                                              Record     m_record;         //     定义一个变量结构集!(可存放了多个变量值)    
 
                                              public     Phone(string     s_name)    
                                              {    
                                                                      s_filename     =     s_name;    
                                              }    
                                              //--    


                                              public     int     Open()    
                                              {    
                                                                      Console.WriteLine( "1:     List     Record ");    
                                                                      Console.WriteLine( "2:     Add     New     Record ");    
                                                                      Console.WriteLine( "3:     Erase     Record ");    
                                                                      Console.WriteLine( "0:     Exit ");    
                                                                      int     i     =     Console.Read()     -     '0 ';    
                                                                      return     i;    
                                              }    
                                              //--     添加纪录    
                                              public     void     AddNew()    
                                              {    
                                                                      try    
                                                                      {    


                                                                                              f_srm     =     new     FileStream(s_filename,FileMode.OpenOrCreate);    
                                                                      }    
                                                                      catch    
                                                                      {    
                                                                                              Console.WriteLine( "Open     PhoneBook     Error! ");    
                                                                                              return;    
                                                                      }    
                                                                      BinaryWriter     pw     =     new     BinaryWriter(f_srm);    
                                                                      pw.Seek(0,SeekOrigin.End);    
                                                                      Console.Write( "Name: ");        
                                                                      Console.ReadLine();    
                                                                      m_record.name     =     Console.ReadLine();    


                                                                      pw.Write(m_record.name);    
                                                                      //     必须一个轮回    
                                                                      reenter:         //     再进入    
                                                                                              Console.Write( "Age: ");    
                                                                      string     s_temp     =     Console.ReadLine();    
                                                                      try    
                                                                      {    
                                                                                              m_record.age     =     Convert.ToUInt16(s_temp);    
                                                                      }    
                                                                      catch    
                                                                      {    
                                                                                              Console.WriteLine( "你输入的年龄非法! ");    


                                                                                              goto     reenter;    
                                                                      }    
                                                                      //    
                                                                      pw.Write(m_record.age);    
                                                                      Console.Write( "Phone     Number: ");    
                                                                      m_record.phone     =     Console.ReadLine();    
                                                                      pw.Write(m_record.phone);    
                                                                      Console.Write( "Address: ");    
                                                                      m_record.address     =     Console.ReadLine();    
                                                                      pw.Write(m_record.address);    
                                                                      this.f_srm.Close();    
                                              }    
                                              //--     列出纪录    


                                              public     void     List()    
                                              {    
                                                                      try    
                                                                      {    
                                                                                              f_srm     =     new     FileStream(s_filename,FileMode.Open);    
                                                                      }    
                                                                      catch    
                                                                      {    
                                                                                              Console.WriteLine( "Open     PhoneBook     Error! ");    
                                                                                              return;    
                                                                      }    
                                                                      BinaryReader     pr     =     new     BinaryReader(f_srm);    
                                                                      Console.WriteLine( "Name     Age     PhoneNum     Address ");    


                                                                      Console.WriteLine( "************************* ");    
                                                                      while(true)    
                                                                      {    
                                                                                              try    
                                                                                              {    
                                                                                                                      m_record.name     =     pr.ReadString();    
                                                                                                                      m_record.age     =     pr.ReadUInt16();    
                                                                                                                      m_record.phone     =     pr.ReadString();    
                                                                                                                      m_record.address     =     pr.ReadString();    
                                                                                              }    


                                                                                              catch(Exception     e)    
                                                                                              {    
                                                                                                                      Console.WriteLine(e.ToString());        
return;    
                                                                                                                             
                                                                                              }    
                                                                                              Console.WriteLine( "{0,-9}{0,-6}{0,-18}{0,3} ",m_record.name,m_record.age,m_record.phone,m_record.address);    
                                                                      }    
                                                                      f_srm.Close();    
                                              }    
                                              //--     清空纪录

[解决办法]
Console.WriteLine( "{0,-9}{1,-6}{2,-18}{3,3} ", m_record.name, m_record.age, m_record.phone, m_record.address);

热点排行