【问题标题】:How to check size of directory and possibly delete last file [duplicate]如何检查目录的大小并可能删除最后一个文件[重复]
【发布时间】:2012-09-02 21:41:57
【问题描述】:

可能重复:
How do I get a directory size (files in the directory) in C#?

我有一个制作 SQL Server 备份的程序。每次运行后,它都会创建一个备份文件。 但是文件正在堆积。

我想添加检查备份目录大小的方法,如果大小高于阈值大小,它将删除最后一个文件。

你知道我该怎么做吗?

非常感谢!

【问题讨论】:

  • 我认为是目录中文件使用的磁盘空间

标签: c# sql-server-2008 directory database-backups


【解决方案1】:

使用 DirectoryInfo 和一点 Linq 是一件容易的事

public void RemoveLastFile(string folderPath, long dirSizeLimit)
{
    long size = 0;
    var files = new DirectoryInfo(folderPath).GetFiles();
    files.Sum(f => size += f.Length);
    if(size > dirSizeLimit)
    {
       var sorted = files.OrderBy(f => f.LastWriteTime);
       File.Delete(sorted.First().FullName);
   }
}

当然这是一个例子。您需要添加一些错误检查。
附言我已经使用了 FileInfo 类的属性 LastWriteTime,在你的情况下(备份文件)我认为它相当于 CreationTime。

【讨论】:

  • 这是一个非常简单的答案。我只想用while 替换if 循环,记住在连续调用RemoveLastFile 之间可以创建多个文件。
【解决方案2】:

添加列表中的所有文件,并结合使用 CompareTo 和 FileInfo CreationTime 对列表进行排序。然后根据您要保留在目录中的文件数相应地删除文件。

至于计算目录文件,只需遍历目录中的所有文件,同时使用 FileInfo Length 来增加总大小的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    相关资源
    最近更新 更多