C#从文本文件的开头删除,而不读取整个文件

C#从文本文件的开头删除,而不读取整个文件,c#,text-files,filesize,C#,Text Files,Filesize,我有一个运行良好的日志应用程序,但是我想应用这个功能来保持日志文件的大小——防止它变得太大 理想情况下,我希望定期检查文件的大小,如果超过配置的大小(5MB或其他),则从一开始就删除,直到达到某个大小,如4MB 通过阅读其他问题,我仍然不清楚是否可以在不阅读文件全部内容的情况下更新/删除文件。我的理想情况是: if(filesize > 5MB) { while(filesize > 4MB) Delete_First_X_Many_Lines(file);

我有一个运行良好的日志应用程序,但是我想应用这个功能来保持日志文件的大小——防止它变得太大

理想情况下,我希望定期检查文件的大小,如果超过配置的大小(5MB或其他),则从一开始就删除,直到达到某个大小,如4MB

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

if(filesize > 5MB)
{
    while(filesize > 4MB)
        Delete_First_X_Many_Lines(file);
}
提前感谢您的指点和指导。

我会这样做:

  • 锁定日志文件(防止写入)
  • 将要保留的日志文件的结尾复制到新文件
  • 将新文件复制到旧日志文件的顶部
  • 解锁日志文件

  • 我知道您可以修改文件的一部分,而无需读取整个文件。但是从一开始就删除吗?我担心这是不可能的(尽管我可能是错的)使用像NLog或log4net这样的现有日志框架的任何机会?他们已经有了这个功能,还有很多很多。我想你必须阅读它并写回你想要保留的内容。然而,知道回写多少将是一个问题。或者像Ryan建议的那样…使用第三方库,其中有人已经完成了繁重的工作。相关: