保存到现有文本文件的末尾 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
添加文本
我写了下面的代码,因为我想以列表的形式将字符串保存到文本文件的末尾。
但是,当我尝试保存某些内容时,它删除了文件中所有以前的文本,只添加了最新的文本。以下是我的代码:
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
添加文本