这是我写的一个二进制读写程序,,
我想要测试的是   string str    的值不一样时会有什么结果,,,
当是"ad,sad,as,dasf,我我";时,,,,,提示是这样的
1.ad,sad,as,dasf,我我
2.19
3.15
4.ad,sad,as,dasf,
当是"ad,sad,as,dasf,我我,";时,,,,,提示是这样的
1.ad,sad,as,dasf,我我,
2.20
3.20
4.ad,sad,as,dasf,我我,
您应该看出来我要说什么了,,,,就是,最后一个字符如果是汉字结尾的,,它就不要的...
害我找半天错....
提醒提醒
         string SSConfig = Application.StartupPath + "\\s.data";          //string str = "ad,sad,as,dasf,我我";
          string str = "ad,sad,as,dasf,我我,";
          MessageBox.Show(str);
          byte[] bywr = System.Text.Encoding.Default.GetBytes(str);          MessageBox.Show(bywr.Length.ToString());          BinaryWriter bw;
          FileStream fs;
          try
          {
              fs = File.OpenWrite(SSConfig);
              bw = new BinaryWriter(fs);
              bw.Write(bywr);
              bw.Flush();
              bw.Close();
              fs.Close();
          }
          catch (Exception ee)
          {
              bw = null;
              fs = null;
              //FindException(ee.Message);
          }          //read
          byte[] byrr;          BinaryReader br1,br2;
          FileStream fs1, fs2;
          try
          {
              fs1 = File.OpenRead(SSConfig);
              br1 = new BinaryReader(fs1);
              //bytemp = br.ReadBytes(620);
              int iItemsDatasLen = 0;
              while (br1.PeekChar() != -1)
              {
                  br1.ReadByte();
                  iItemsDatasLen++;
              }
              br1.Close();
              fs1.Close();//得到长度 会让你吓一跳
              //second read
              fs2 = File.OpenRead(SSConfig);
              br2 = new BinaryReader(fs2);              byrr = br2.ReadBytes(iItemsDatasLen);//read the bytes,but you will find it may lose something...
              br2.Close();
              fs2.Close();              MessageBox.Show(iItemsDatasLen.ToString());
              string ReStr = System.Text.Encoding.Default.GetString(byrr);
              MessageBox.Show(ReStr);
          }
          catch (Exception ee)
          {
          }

解决方案 »

  1.   

    自己不会写时不要骂别人,不要太标题党!你试试下面的,你的问题出在读数据时没有正确读出二进制信息,lz去msdn好好看看BinaryReader吧。
    StreamReader fs1 = new StreamReader(SSConfig, Encoding.Default);
    MessageBox.Show( fs1.ReadToEnd());
      

  2.   

    LZ 应该在“C#”后面加个“我”...
      

  3.   

    那也有问题啊..比如说,第一次 写入的字符串是 "ad,sad,as,dasf,我我,"
    但是我把字符串 换了这个,"ad,sad,as,dasf,我我"
    然后我用你那个方法读,,我这样加入的:
                  StreamReader fs11 = new StreamReader(SSConfig, Encoding.Default);
                  MessageBox.Show(fs11.ReadToEnd());
                  fs11.Close();
    结果是:
    ad,sad,as,dasf,我我
    19
    ad,sad,as,dasf,我我,
    20
    我觉得,这应该 写进19 个后,  内容应该 是覆盖的 ,,我第二次读出来 应该是写的内容,,,事实不是..
    文本都不会这样...倒
      

  4.   

    可是现在问题好像是,二进制文件只可以加长的问题....
    我把字符 换大了..
    比如本来写"abc我"
    后来写"abc我我"
    可以正常......
    但是如果再改成"abc我"
    它读出来的就是 后来写的的"abc我我"我不明白,怎么文本读写都不会这样之前还一直以为是C#怎么搞的呢....我的错..