C#中的文件大小监视

我在系统和pipe理团队工作,并被赋予创build配额pipe理应用程序的任务,以尝试和鼓励用户更好地pipe理资源,因为我们目前存在磁盘空间问题,不执行硬配额。

目前,我正在使用下面的代码遍历用户主空间中的所有文件,以检索它们正在使用的总空间量。 从我看到的其他方面来说,在C#中没有其他方式来做到这一点,与它的问题是他们相当高的开销,而它退缩每个文件的大小,然后创build一个总计。

try { long dirSize = 0; FileInfo[] FI = new DirectoryInfo("I:\\").GetFiles("*.*", SearchOption.AllDirectories); foreach (FileInfo F1 in FI) { dirSize += F1.Length; } return dirSize; } 

所以我正在寻找一个更快的方法来做到这一点,或者一个快速的方法来监视文件大小的变化,同时使用通过FileSystemWatcher可用的选项。 目前我唯一能想到的是创build一个包含每个文件的文件位置和大小的散列表,所以当发生大小更改事件时,我可以比较旧大小和新大小,并更新总大小。

任何build议将不胜感激。

就试图编写自己的管理系统而言,位置和大小表并不是一个坏主意。 也许包含一些xmlserialization和LINQ到XML报告等我认为你已经在正确的道路上决定使用FileSystemWatcher

我同意大卫,使用FileSystemWatcher意味着你将只需要计算目录的变化。

当目录内容改变时,只需要改变已经改变的内容就可以了。

使用Changed事件。

你知道你可以通过Windows在NTFS卷上执行配额吗? 当操作系统本身支持这个时,为什么要自己推出?