如何将文本写入文本文件?它覆盖同一行而不是添加新行

时间:2019-01-03 17:57:28

标签: c#

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,但最后仍然只看到一行。

2 个答案:

答案 0 :(得分:2)

您应该改用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);
    }
}

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

编辑::由于此处使用WriteLine方法,该方法可以为您处理行尾,因此您无需在字符串后附加Environment.NewLine。谢谢@Julo!

答案 1 :(得分:1)

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