10

我正在使用以下代码写入文本文件。我的问题是,每次执行以下代码时,它都会清空 txt 文件并创建一个新文件。有没有办法附加到这个txt文件?

string[] lines = {DateTime.Now.Date.ToShortDateString(),DateTime.Now.TimeOfDay.ToString(), message, type, module };
System.IO.File.WriteAllLines(HttpContext.Current.Server.MapPath("~/logger.txt"), lines);
4

7 回答 7

19

File.AppendAllLines应该可以帮助您:

string[] lines = {DateTime.Now.Date.ToShortDateString(),DateTime.Now.TimeOfDay.ToString(), message, type, module };
System.IO.File.AppendAllLines(HttpContext.Current.Server.MapPath("~/logger.txt"), lines);
于 2013-03-13T07:26:10.567 回答
8

使用File.AppendAllLines. 应该这样做

System.IO.File.AppendAllLines(
       HttpContext.Current.Server.MapPath("~/logger.txt"), 
       lines);
于 2013-03-13T07:22:36.400 回答
3

您可以使用StreamWriter;如果文件存在,它可以被覆盖或附加到。如果文件不存在,则此构造函数创建一个新文件。

string[] lines = { DateTime.Now.Date.ToShortDateString(), DateTime.Now.TimeOfDay.ToString(), message, type, module };

using(StreamWriter streamWriter = new StreamWriter(HttpContext.Current.Server.MapPath("~/logger.txt"), true))
{
    streamWriter.WriteLine(lines);
}
于 2013-03-13T07:38:26.277 回答
2

做这样的事情:

string[] lines = {DateTime.Now.Date.ToShortDateString(),DateTime.Now.TimeOfDay.ToString(), message, type, module };
          if (!File.Exists(HttpContext.Current.Server.MapPath("~/logger.txt")))
          {
              System.IO.File.WriteAllLines(HttpContext.Current.Server.MapPath("~/logger.txt"), lines);
          }
          else
          {
              System.IO.File.AppendAllLines(HttpContext.Current.Server.MapPath("~/logger.txt"), lines);
          }

因此,如果文件不存在,它将创建并写入文件,如果文件存在,它将附加到文件中。

于 2013-03-13T07:26:58.893 回答
1

采用

公共静态无效 AppendAllLines(字符串路径,IEnumerable 内容)

于 2013-03-13T07:30:27.810 回答
0

三个函数可用 ..File.AppendAllLine ,FileAppendAllText 和 FileAppendtext ..你可以试试你喜欢...

于 2013-03-13T07:28:21.587 回答
0

在上述所有情况下,我更喜欢使用 using 来确保打开和关闭文件选项将得到处理。

于 2017-02-10T20:13:56.363 回答