2014-04-13 149 views
0

我正在制作一个加密程序,需要使用二进制读取器和写入器将加密密码保存到文件中。当我尝试读取数据时,我得到的只是一个数字。我做错了什么?C#二进制读取器

public static string readData(string fileName) 
    { 
     string data; 

     FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); 

     using (BinaryReader reader = new BinaryReader(fStream)) 
     { 
      data = reader.Read().ToString(); 
     } 

     return data; 
    } 

和作者

public static void writeData(string fileName, string data) 
{ 

    using (BinaryWriter writer = new BinaryWriter(File.Open (fileName, FileMode.Create))) 
     { 
      writer.Write(data); 
     } 
    } 
+2

'BinaryReader.Read()'的文档告诉你什么? –

+2

请告诉我这是一个学习练习,不适用于任何类型的生产系统。 –

+0

这是一个学习exersize。我也是一个业余爱好者,对c#更新。请告诉我我的代码有什么不好。 @TomStudee – user3453481

回答

1

使用reader.ReadString()代替。

data = reader.ReadString(); 

Read方法读取下一个字符,并返回其对应的整数值,你可以在documentation。基本上看,你已经写了string以二进制格式文件,所以您需要阅读它背部。

1

那是因为你所呼叫的Read方法返回单个integer.¨

你想要做ReadString

+0

他很可能不想要。毕竟如何将字符串与读取和写入_binary_数据结合在一起? –

+1

那么他确实说他正在使用'WriteString'将密码写入文件,所以'ReadString'对于读取它会很好。 (我实际上用'ReadBytes'开始了答案,但后来又回过头再读一遍这个问题)。 – driis