0

可能重复:
如何在 C# 中获取目录大小(目录中的文件)?

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

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

你知道我该怎么做吗?

非常感谢!

4

2 回答 2

0

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

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

于 2012-09-02T21:48:43.437 回答
0

使用 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);
   }
}

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

于 2012-09-02T22:10:52.193 回答