保存到现有文本文件的末尾 c#

Saving to end of exsisting text file c#

我写了下面的代码,因为我想以列表的形式将字符串保存到文本文件的末尾。

但是,当我尝试保存某些内容时,它删除了文件中所有以前的文本,只添加了最新的文本。以下是我的代码:

using (var writer = new StreamWriter(@"C:\Users\Falconex\Documents\Visual Studio 2015\Projects\Test2\Test2\bin\Debug\Product.txt"))
{
    writer.WriteLine(productTextBox.Text + Environment.NewLine);
    writer.Close();
}

提前谢谢你,露西

您目前只是在每次写入时覆盖文件的内容。

StreamWriter 有第二个参数,您必须将其设置为 true 才能附加文本: https://msdn.microsoft.com/library/36b035cb(v=vs.110).aspx

using (var writer = new StreamWriter(@"C:\Path\To\file.txt", true))
{
    writer.WriteLine(productTextBox.Text + Environment.NewLine);
    writer.Close();
}

你好尝试将此代码添加到新的 StreamWriter 构造函数

new FileStream(@"path/to/file", FileMode.Append, FileAccess.Write)

有关详细信息,请查看 https://msdn.microsoft.com/cs-cz/library/wtbhzte9(v=vs.110).aspx

你可以做得更容易。在 class "File" 上使用一些静态方法(AppendAllLines、AppendText、AppendAllText)。例如:

 File.AppendAllLines("filename.txt", new string[] { "my appended text" });

那是因为你覆盖了之前的内容。您需要先阅读内容,将其暂时存储起来,然后用新文本重新写入。像这样:

//Reading text
string text = System.IO.File.ReadAllText(@"C:\Users\Falconex\Documents\Visual Studio 2015\Projects\Test2\Test2\bin\Debug\Product.txt");
using (var writer = new StreamWriter(@"C:\Users\Falconex\Documents\Visual Studio 2015\Projects\Test2\Test2\bin\Debug\Product.txt"))
{
    writer.WriteLine(text + productTextBox.Text + Environment.NewLine);
    writer.Close();
}
using (var writer = new StreamWriter(@"C:\Users\Falconex\Documents\Visual         Studio 2015\Projects\Test2\Test2\bin\Debug\Product.txt",true))
            {
                writer.WriteLine(productTextBox.Text + Environment.NewLine);
                writer.Close();
            }

试试这个:

 using (var writer = new StreamWriter(filepath, true))
    {
        {
        writer.Write(productTextBox.Text + Environment.NewLine);
        }
    writer.Close();
    }

如果文件存在,true 参数告诉 StreamWriter 添加文本