2016-03-15 56 views
1

我想写二进制用户数据到一个.data文件和bw.Write()代替{0},{1},{2},{3}不能用,因为它被误认为是该方法的一个参数。BinaryWriter不采取替代参数

有一个变通将该数据写入到该文件,但在Console.Write(“你好{0}”,名字)还是替代变量,如

当我将鼠标悬停在错误它说

没有重载方法 '写入' 需要5个参数

public static void WriteUser(String path, String user, String auth, String pass, DateTime date) 
    { 

     try 
     { 
      BinaryWriter bw = new BinaryWriter(new FileStream("mydata", FileMode.Open)); 

      bw.Write("{0}{\nAuth:{1}\nPass:{2}\nDateCreated:{3}", user, auth, pass, date); 
     } 

     catch (IOException e) 
     { 
      Console.WriteLine(e.Message + "\n Cannot write to file."); 
      return; 
     } 
     bw.Close(); 

    } 
+2

如果你不能因为某些原因使用的StringWriter代替的BinaryWriter的,你会想用'的String.Format()'函数的变量替换成一个字符串,然后同意一个encodi ng,例如ASCII,将字符串转换为二进制格式的字节流。 – dlatikay

+0

我已经看了BinaryWriter中的教程,我只需要提供一个字符串给bw.Write()函数/方法,但我想像使用Console.Write(“Bye {0}”,姓名) – silentcallz

回答

3

只需拨打string.Format自己:

bw.Write(string.Format("{0}{\nAuth:{1}\nPass:{2}\nDateCreated:{3}", user, auth, pass, date)); 

但如果你正在使用C#6,您可以使用插值的字符串使这种清洁剂:

bw.Write($"{user}{{\nAuth:{auth}\nPass:{pass}\nDateCreated:{date}"); 

需要注意的是,如果你想写的文字,我只是用StreamWriter - 或更好的是,只需要调用File.WriteAllText

public static void WriteUser(String path, String user, String auth, String pass, DateTime date) 
{ 
    try 
    { 
     File.WriteAllText(
      "mydata", 
      $"{user}{{\nAuth:{auth}\nPass:{pass}\nDateCreated:{date}"); 
    } 
    catch (IOException e) 
    { 
     Console.WriteLine(e.Message + "\n Cannot write to file."); 
     return; 
    } 
} 
+0

谢谢你的帮助,这完美解决了 – silentcallz