【问题标题】:How can I write text to a text file? It's overwriting the same line instead adding a new one [duplicate]如何将文本写入文本文件?它覆盖同一行而不是添加一个新行[重复]
【发布时间】:2019-01-03 17:57:27
【问题描述】:
for (int i = 0; i < clipAnimations.Length; i++)
{
    clipAnimations[i].name = "magic_" + name;
    string n = clipAnimations[i].name + Environment.NewLine;
    File.WriteAllText(@"d:\test\names.txt", n);
}

我添加了 Environment.NewLine 但最后我仍然只看到一行。

【问题讨论】:

  • 改用File.AppendText。例如,请参阅this question
  • 不要像以前那样写入文件。每次为一行打开和关闭文件不是一个好习惯。请参阅 Abhinav Bhandari 的回答。

标签: c#


【解决方案1】:

您应该改用File.AppendText。目前,您正在使用 File.WriteAllText 如果文件不存在则创建文件,否则在将字符串写入之前清除现有文件。但是,File.AppendText 会在文件不存在时创建文件(如果文件存在则不会清除它,这与 File.WriteAllText 不同),然后将字符串附加到文件末尾。

using (StreamWriter w = File.AppendText(@"d:\test\names.txt"))
{
    for (int i = 0; i < clipAnimations.Length; i++)
    {
        clipAnimations[i].name = "magic_" + name;
        string n = clipAnimations[i].name; // no need to append Environment.NewLine
        w.WriteLine(n);
    }
}

您还应该考虑在using 块中使用StreamWriter,如图所示,这样可以避免多次打开和关闭文件。

编辑: 因为这里使用了WriteLine 方法,它为您处理行尾,所以您不需要将 Environment.NewLine 附加到字符串。谢谢@Julo!

【讨论】:

    【解决方案2】:

    使用File.AppendText()WriteText() 创建一个新文件或覆盖现有文件,而追加将创建一个新文件或附加到现有文件。

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 2014-05-31
      • 1970-01-01
      • 2014-12-28
      • 2012-03-22
      • 2020-03-28
      • 1970-01-01
      • 2012-04-15
      • 2021-07-19
      相关资源
      最近更新 更多