【问题标题】:C# Delete From Beginning of Text File Without Reading Entire FileC#从文本文件的开头删除而不读取整个文件
【发布时间】:2013-05-25 00:04:58
【问题描述】:

我有一个运行良好的日志记录应用程序,但我想应用保持日志文件大小的功能 - 阻止它变得太大。

理想情况下,我想定期检查文件的大小,如果超过配置的大小(5MB 或其他),请从头开始删除,直到达到某个大小,例如 4MB。 p>

通过阅读其他问题,我仍然不清楚是否可以在不阅读文件全部内容的情况下更新/删除文件。我的理想情况是:

if(filesize > 5MB)
{
    while(filesize > 4MB)
        Delete_First_X_Many_Lines(file);
}

提前感谢您的任何指示和指导。

【问题讨论】:

  • 我知道您可以修改文件的一部分,而无需读取整个文件。但是从头删除呢?我担心这是不可能的(尽管我可能错了)
  • 是否有机会使用现有的日志框架,如 NLog 或 log4net?他们已经有了这个功能,而且还有很多很多。
  • 我认为您将不得不阅读并写回您想要保留的内容。但是,知道要写回多少将是一个问题。或者像 Ryan 建议的那样......使用已经有人完成繁重工作的第 3 方库。

标签: c# text-files filesize


【解决方案1】:

我会这样做:

  1. 锁定日志文件(防止写入)。
  2. 将要保留的日志文件末尾复制到一个新文件中。
  3. 将新文件复制到旧日志文件之上。
  4. 解锁日志文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2019-04-12
    相关资源
    最近更新 更多