2016-03-15 64 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

相關問題