可能重复:
如何在 C# 中获取目录大小(目录中的文件)?
我有一个制作 SQL Server 备份的程序。每次运行后,它都会创建一个备份文件。但文件正在积累。
我想添加检查备份目录大小的方法,如果大小高于阈值大小,它将删除最后一个文件。
你知道我该怎么做吗?
非常感谢!
可能重复:
如何在 C# 中获取目录大小(目录中的文件)?
我有一个制作 SQL Server 备份的程序。每次运行后,它都会创建一个备份文件。但文件正在积累。
我想添加检查备份目录大小的方法,如果大小高于阈值大小,它将删除最后一个文件。
你知道我该怎么做吗?
非常感谢!
添加列表中的所有文件,并结合使用 CompareTo 和 FileInfo CreationTime 对列表进行排序。然后根据您要保留在目录中的文件数相应地删除文件。
至于计算目录文件,只需遍历目录中的所有文件,同时使用 FileInfo Length 来增加总大小的变量。
使用 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。