这是我写的一个二进制读写程序,,
我想要测试的是 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)
{
}
我想要测试的是 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)
{
}
StreamReader fs1 = new StreamReader(SSConfig, Encoding.Default);
MessageBox.Show( fs1.ReadToEnd());
但是我把字符串 换了这个,"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 个后, 内容应该 是覆盖的 ,,我第二次读出来 应该是写的内容,,,事实不是..
文本都不会这样...倒
我把字符 换大了..
比如本来写"abc我"
后来写"abc我我"
可以正常......
但是如果再改成"abc我"
它读出来的就是 后来写的的"abc我我"我不明白,怎么文本读写都不会这样之前还一直以为是C#怎么搞的呢....我的错..