在新行中写入文本(循环)

时间:2012-11-06 05:29:15

标签: c# asp.net web-applications

我想创建一个简单的日志文件并添加框架 这是我到目前为止所发现的。> br> 这个类是从另一个在循环中执行的类调用的,所以每次循环结束时它都会调用这个calss,这个类会写一个日志(及时创建的数据)。但是,我得到的只是每次用txt文件编写的新字符串,它只替换第一个字符串。 如何在新行中添加新字符串而不替换旧字符串? 我读了environment.newline,但我没理解。

    private void logFile()
    {
        StreamWriter logfile = null;
        logfile = File.CreateText(Server.MapPath("/CCTV_Files/log.txt"));
        try
        {
            logfile.Write(String.Format("{0:yyyyMMdd_hhmmss}", DateTime.Now) + " Frame added");
        }
        catch (IOException e)
        {
            Console.WriteLine(e);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
        finally
        {
            if (logfile != null)
            {
                logfile.Close();
            }
        }
     }

6 个答案:

答案 0 :(得分:3)

您需要使用File.AppendText(),这是msdn帮助

private void logFile()
    {
        StreamWriter logfile = null;
        logfile = File.AppendText(Server.MapPath("/CCTV_Files/log.txt"));
        try
        {
            logfile.Write(String.Format("{0:yyyyMMdd_hhmmss}", DateTime.Now) + " Frame added");
        }
        catch (IOException e)
        {
            Console.WriteLine(e);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
        finally
        {
            if (logfile != null)
            {
                logfile.Close();
            }
        }
     }

答案 1 :(得分:2)

使用File.AppendText

logfile = File.AppendText(Server.MapPath("/CCTV_Files/log.txt"));

而不是File.CreateText

logfile = File.CreateText(Server.MapPath("/CCTV_Files/log.txt"));

答案 2 :(得分:2)

此方法等效于StreamWriter(String,Boolean)构造函数重载,append参数设置为false。如果path指定的文件不存在,则创建该文件。如果文件存在,则其内容将被覆盖。

选项1:您可以将StreamWriter与追加为True一起使用。

public StreamWriter(   字符串路径,   布尔附加   )

StreamWriter sw = new StreamWriter(fileName,true)

选项2:您也可以选择使用File.AppendText。

参考:

http://msdn.microsoft.com/en-us/library/system.io.file.createtext.aspx

http://msdn.microsoft.com/en-us/library/36b035cb.aspx

http://msdn.microsoft.com/en-us/library/system.io.file.appendtext.aspx

答案 3 :(得分:1)

试试这个。

   string path = your file path;
   using(StreamWriter sw = new StreamWriter(path,true))
           {

                    sw.WriteLine("string here");
           }

答案 4 :(得分:0)

您可以在附加模式中打开日志文件。

http://msdn.microsoft.com/en-us/library/3zc0w663.aspx

这将是有用的

http://roque-patrick.com/windows/final/bbl0190.html

答案 5 :(得分:0)

为什么要打开文件并管理它们呢? 使用log4net库: log4net

它非常棒,只需几行配置,您就可以拥有日志文件,其中包含大量信息和详细信息。

private static readonly ILog log = LogManager.GetLogger(typeof(Foo));

///In your method:
log.Info("Information");
log.Error("Error happened");
log.Debug("bla bla");
///etc.

这是一个日志文件示例:

176 [main] INFO  examples.Sort - Populating an array of 2 elements in reverse order.
225 [main] INFO  examples.SortAlgo - Entered the sort method.
262 [main] DEBUG SortAlgo.OUTER i=1 - Outer loop.
276 [main] DEBUG SortAlgo.SWAP i=1 j=0 - Swapping intArray[0] = 1 and intArray[1] = 0
290 [main] DEBUG SortAlgo.OUTER i=0 - Outer loop.
304 [main] INFO  SortAlgo.DUMP - Dump of integer array:
317 [main] INFO  SortAlgo.DUMP - Element [0] = 0
331 [main] INFO  SortAlgo.DUMP - Element [1] = 1
343 [main] INFO  examples.Sort - The next log statement should be an error message.
346 [main] ERROR SortAlgo.DUMP - Tried to dump an uninitialized array.
467 [main] INFO  examples.Sort - Exiting main method.

如果您坚持使用自己的方式,只需使用此代码:

logfile = File.AppendText(Server.MapPath("/CCTV_Files/log.txt"));