2012-09-02 32 views
0

可能重复:
How do I get a directory size (files in the directory) in C#?如何检查目录的大小,并可能删除最后一个文件

我有一个计划,使SQL Server备份。每次运行后,它会创建一个备份文件。 但文件正在积累。

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

你知道我该怎么做?

非常感谢!

+0

我以为目录中的文件使用的磁盘空间 – VilemRousi

回答

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

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

+0

这真的很简单的答案。我只是用'while'替换'if'循环,记住可以在连续调用'RemoveLastFile'之间创建几个文件。 –

0

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

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

相关问题