2015-09-27 145 views
1

我注意到在使用下面的代码创建的文件中没有换行符。在数据库中,我也存储文本,这些都存在。使用File.WriteAllText时没有换行符(字符串,字符串)

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

因此,一些short googling后我才知道,我应该指的是使用环境换行字面\ n新生产线,而不是。所以我补充说,如下所示。

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

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

回答

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')); 
+0

没有解决原来的问题,但建议本身是好的TEAD。我发布了一个非常简单的示例,跳过构建器,以缩短内容。重点是使用* File *类来代替其他用于写入的其他类,并且仍然可以获得换行符。这可能吗? –

+0

@KonradViltersten更新了答案,只需用'Environment.NewLine'替换'\ n'并且它可以工作 – Backs

+0

呵呵,你看到我的第二个例子吗?多余的线,从结尾第二?我添加* Environment.NewLine *,但它仍然**不进入文件。因此,这个问题。但我会给你一个免费赠品,因为我发现了什么是错的。而不是* WriteAllText *,我需要去* WriteAllLines *和* Split *故事。 –

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); 
     } 
+0

* File *中没有这样的方法。当然,我可以换到另一个班,但我希望保持简短。我很好奇在* File * class中没有换行符... –

1

使用

File.WriteAllText(path, content);

使用

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