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

时间:2017-02-20 13:27:57

标签: 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:")

以下是被调用的方法。

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

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

3 个答案:

答案 0 :(得分:9)

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

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

这就是为什么

  

MM - dd - yyyy HH mm ss - 每 s onali ty d t e() g innin的

成为

  

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

可以找到here on MSDN

的完整自定义日期格式列表

答案 1 :(得分:4)

您正在将now转换为字符串,而您的其他文本则位于ToString方法内。 分开这两个,它应该没问题。

 writer.WriteLine(now.ToString("MM-dd-yyyy HH:mm:ss") + " - " + message);

答案 2 :(得分:2)

尝试

DateTime now = DateTime.Now;
using (StreamWriter writer = new StreamWriter(logFile, !replaceExistingFile))
{
    writer.WriteLine(now.ToString("MM-dd-yyyy HH:mm:ss")  + "- " + message);
    writer.WriteLine(" ");
}