如何在C#中将数据写入文本文件而不覆盖当前数据

问候,我似乎无法弄清楚如何在不覆盖文件的情况下将数据写入文件。 我知道我可以使用File.appendtext但我不知道如何将其插入到我的语法中。 这是我的代码:

TextWriter tsw = new StreamWriter(@"C:\Hello.txt"); //Writing text to the file. tsw.WriteLine("Hello"); //Close the file. tsw.Close(); 

我希望每次运行程序时都写Hello,而不是覆盖以前的文本文件。 感谢您阅读本文。

true 作为构造函数的append参数传递:

 TextWriter tsw = new StreamWriter(@"C:\Hello.txt", true); 

更改构造函数以将true作为第二个参数传递。

 TextWriter tsw = new StreamWriter(@"C:\Hello.txt",true); 

您必须以new StreamWriter(filename, true)打开new StreamWriter(filename, true)以便它附加到文件而不是覆盖。

这是一块将值写入日志文件的代码。 如果该文件不存在,则创建它,否则它只会附加到现有文件。 您需要添加“using System.IO;” 在代码的顶部,如果它还没有。

 string strLogText = "Some details you want to log."; // Create a writer and open the file: StreamWriter log; if (!File.Exists("logfile.txt")) { log = new StreamWriter("logfile.txt"); } else { log = File.AppendText("logfile.txt"); } // Write to the file: log.WriteLine(DateTime.Now); log.WriteLine(strLogText); log.WriteLine(); // Close the stream: log.Close(); 

最棒的是

 File.AppendAllText("c:\\file.txt","Your Text"); 

查看File类。

您可以使用创建一个streamwriter

 StreamWriter sw = File.Create(....) 

您可以使用打开现有文件

 File.Open(...) 

您可以轻松附加文本

 File.AppendAllText(...); 
 using (StreamWriter writer = File.AppendText(LoggingPath)) { writer.WriteLine("Text"); } 

首先检查文件名是否已经存在,如果是,则创建一个文件并同时关闭它,然后使用AppendAllText附加文本。 有关更多信息,请查看以下代码。


 string FILE_NAME = "Log" + System.DateTime.Now.Ticks.ToString() + "." + "txt"; string str_Path = HostingEnvironment.ApplicationPhysicalPath + ("Log") + "\\" +FILE_NAME; if (!File.Exists(str_Path)) { File.Create(str_Path).Close(); File.AppendAllText(str_Path, jsonStream + Environment.NewLine); } else if (File.Exists(str_Path)) { File.AppendAllText(str_Path, jsonStream + Environment.NewLine); }