使用File.WriteAllText(字符串,字符串)时没有换行符

时间:2015-09-27 09:56:42

标签: c# file line-breaks

我注意到我使用下面的代码创建的文件中没有换行符。在我也存储文本的数据库中,存在这些文本。

string story = "Critical error occurred after " 
  + elapsed.ToString("hh:mm:ss") 
  + "\n\n" + exception.Message;
File.WriteAllText(path, story);

所以经过一些short googling我了解到我应该使用 Environment-NewLine 而不是文字 \ n 来引用新行。所以我补充说如下所示。

string story = "Critical error occurred after " 
  + elapsed.ToString("hh:mm:ss") 
  + "\n\n" + exception.Message;
  .Replace("\n", Environment.NewLine);
File.WriteAllText(path, story);

但是,输出文件中没有换行符。我错过了什么?

4 个答案:

答案 0 :(得分:3)

尝试StringBuilder方法 - 它更具可读性,您不需要记住Environment.NewLine\n\r\n

var sb = new StringBuilder();

string story = sb.Append("Critical error occurred after ")
               .Append(elapsed.ToString("hh:mm:ss"))
               .AppendLine()
               .AppendLine()
               .Append(exception.Message)
               .ToString();
File.WriteAllText(path, story);

简单的解决方案:

string story = "Critical error occurred after " 
  + elapsed.ToString("hh:mm:ss") 
  + Environment.NewLine + exception.Message;
File.WriteAllLines(path, story.Split('\n'));

答案 1 :(得分:3)

而不是使用

File.WriteAllText(path, content);

使用

File.WriteAllLines(path, content.Split('\n'));

答案 2 :(得分:0)

您可以使用WriteLine()方法,如下面的代码

   using (StreamWriter sw = StreamWriter(path)) 
        {
            string story = "Critical error occurred after "  +elapsed.ToString("hh:mm:ss");
            sw.WriteLine(story);   
            sw.WriteLine(exception.Message); 
        }

答案 3 :(得分:-2)

WriteAllText除去换行符,因为它不是文本。