我发现c#在操作文件中一些不可显示的字符时可能会出现错误。比如
我创建c:\test.txt,用ultra  edit直接编辑十六进制F3  89  C4  01  00  53(对应的字符串是"髩?  S  "),其中C4 01就是不可显示的字符,然后保存。  
之后我需要通过读写文件操作将内容保存到output.txt中,我是这么做的:  
StreamReader  sr  =  new  StreamReadernew  FileStream(@"C:\test.txt",  FileMode.Open),System.Text.Encoding.Default);  
string  data=sr.ReadToEnd();  
sr.Close();  
FileStream  sb  =  new  FileStream(@"c:\output.txt",FileMode.Append);  
StreamWriter  sw  =  new  StreamWriter(sb,System.Text.Encoding.Default);  
sw.Write(data.ToString());  
Console.Write(data);  
sw.Close();  
但是打开output.txt,查看十六进制发现内容变成了F3  89  3F  00  53  
请问我该怎么做才能让这两个文件内容完全一致???

解决方案 »

  1.   

    sw.Write(data.ToString());  不要转换成 string ,直接使用 byte[] 读、写
      
    --------------------------------------------------------------
    程序,犹如人生。
      

  2.   

    直接用byte类型。用16进制字符读写数据。
      

  3.   

    不知道你搞定没?换种思路,直接用FileStream读写,以二进制流方式,代码如下: FileStream stream = new FileStream(@"C:\test.txt", FileMode.Open);
                byte [] array=new byte [stream .Length ];
                stream.Read(array, 0, (int)stream.Length);
                stream.Close();
                stream = new FileStream(@"c:\output.txt", FileMode.Append);
                stream.Write(array, 0, (int)array.Length);
                stream.Flush();
                stream.Close();这样写进去的和原来的一样..
    已测试 ..