为什么StreamWriter改变它写入文件的文本?

MJG*_*MJG 1 c# streamwriter

我有一个用C#编写的类库,用于将错误和其他信息写入文本或日志文件.问题是它在将文本写入文件时正在改变文本.它由vb.net应用程序调用.

应该写的文字: 02-20-2017 08:17:42 - Personality Update() beginning:

实际写的文字: 02-20-2017 08:17:42 - Per42onaliA17 Up20aAe() beA.D.inninA.D.:

下面是调用该方法来写出字符串的代码.

errHandler.AddLineToLogFile(Me.MasterLogFileName, "Personality Update() beginning:")
Run Code Online (Sandbox Code Playgroud)

以下是被调用的方法.

    public void AddLineToLogFile(string logFile, string message, bool replaceExistingFile = false)
    {
        DateTime now = DateTime.Now;
        using (StreamWriter writer = new StreamWriter(logFile, !replaceExistingFile))
        {
            writer.WriteLine(now.ToString("MM-dd-yyyy HH:mm:ss - " + message));
            writer.WriteLine(" ");
        }
    }
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

Man*_*mer 9

您将消息作为日期格式的一部分传递.与已知格式匹配的部件将替换为值now.格式化添加消息DateTime:

now.ToString("MM-dd-yyyy HH:mm:ss") + " - " + message
Run Code Online (Sandbox Code Playgroud)
  • s=第二个(42)
  • t= AM/PM指示符的第一个字符(A)
  • y=年份,从0到99(17)
  • d=一天(20)
  • g=时期或时代(A.D.)

这就是为什么

MM - dd - yyyy HH:mm:ss - Per s onali ty up d a t e()be g innin g:

02-20-2017 08:17:42 - Per42onaliA17 Up20aAe()beA.D.inninA.D.:

可以在MSDN上找到自定义日期格式的完整列表

  • 这是最精确和最完整的答案,也解释了问题不仅仅是发布代码修复.. (2认同)