2017-02-09 46 views
-1

我的StreamWriter出現問題。我正在使用Visual Studion 2010和2015,.NET Framework 4.0。這裏是我的代碼來寫日誌文件樣本:c#StreamWriter輸入字符串在文件上的輸出字符串上不相同

using (StreamWriter swErr = new StreamWriter(HostingEnvironment.MapPath("~/Logs/") + 
      DateTime.Now.ToString("yyyyMMdd") + ".log", true, Encoding.Default)) 
{ 
    if (!string.IsNullOrEmpty(errMsg)) 
     swErr.WriteLine(DateTime.Now.ToString("HH:mm:ss " + errMsg)); 
    if (result != null && result.Count > 0) 
     foreach (Mandrill.EmailResult x in result) 
     { 
      stat = string.Format("{0} | {1} | {2} | {3}", 
         x.Id, x.Email, x.Status, x.RejectReason ?? "-" 
      ); 
      Console.WriteLine(stat); 
      swErr.WriteLine(DateTime.Now.ToString("HH:mm:ss " + stat)); 
     } 
    if (!string.IsNullOrEmpty(errMsg) || (result != null && result.Count > 0)) 
     swErr.WriteLine("---"); 
} 

出於某種原因,這裏有望VS這段代碼的實際輸出樣本:

Expected OUTPUT: 

10:10:02 e7424f10d1ee431fb69d9014265b278a | [email protected] | Sent 

---------- 



ACTUAL OUTPUT 

10:10:02 e742431091ee4313b6999014265b278a | [email protected] | SenA 

---------- 

出於某種原因,我不知道它將某些字符轉換爲隨機數字或字母。我嘗試刪除StreamWriter的編碼參數,也嘗試通過和Encoding.UTF8,但它仍然是相同的。

我認爲我的語法正常,並正確處理了StreamWriter的處置。

我希望任何人都可以幫助我解決這個問題。

謝謝!

+0

輸入中是否有特殊字符? – A3006

+0

還有一件事,如果您嘗試使用File.WriteAllText(),輸出是什麼? – A3006

+0

我沒有任何特殊字符。此外,加載到streamWriter路徑上的文件不存在或不存在。我會嘗試使用你的建議,看看會發生什麼。 –

回答

0

對於那些會遇到這個問題的人。我真的很抱歉我的愚蠢,但這是一個語法錯誤。錯誤消息包含在日期的字符串格式中。

DateTime.Now.ToString("HH:mm:ss" + errMsg); 

這必須是:

DateTime.Now.ToString("HH:mm:ss") + errMsg; 


希望任何其他人就不會遇到這種情況。