c#StreamWriter输入字符串在文件的输出字符串上不相同

时间:2017-02-09 05:41:57

标签: c# .net-4.0 streamwriter

我的StreamWriter出现问题。我使用Visual Studion 2010和2015,.NET Framework 4.0。以下是编写日志文件的代码示例:

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("---");
}

出于某种原因,以下是此代码的预期与实际输出示例:

Expected OUTPUT:

10:10:02 e7424f10d1ee431fb69d9014265b278a | tito.genovajr@paramount.com.ph | Sent

----------



ACTUAL OUTPUT

10:10:02 e742431091ee4313b6999014265b278a | AiAo.A.D.enovajr@para10ounA.co10.p10 | SenA

----------

出于某种原因,我不知道它会将某些字符转换为随机数字或字母。我尝试删除StreamWriter for Encoding的参数,也尝试传递Encoding.ASCIIEncoding.UTF8,但它仍然是相同的。

我认为我的语法正常,并正确处理了StreamWriter。

我希望有人可以帮我解决这个问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

对于那些会遇到这个问题的人。我真的很抱歉我的愚蠢,但这是一个语法错误。错误消息包含在日期的字符串格式中。

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

这必须是:

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


希望任何其他人都不会遇到这个。