2017-02-09 37 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; 


希望任何其他人就不会遇到这种情况。