我在系统和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议将不胜感激。
golang os * File.Readdir在所有文件上使用lstat。 可以优化吗?
如何在FreeBSD系统中增加MAX_PATH_LENGTH?
有没有像USN日记Linux文件系统?
无法在Windows 10 PC上使用Java Open Dialog在IDE中查看联网驱动器,但在IDE之外查看
如何在Linux中以编程方式获取磁盘名称(如“/ dev / sda”或“/ dev / sdb”)?
dentry和i-node的数量
使用Linux恢复Windows Spanned disks(LDM)?
是否ftruncate()复制数据,如果我截断到比原来更大的尺寸?
就试图编写自己的管理系统而言,位置和大小表并不是一个坏主意。 也许包含一些xmlserialization和LINQ到XML报告等我认为你已经在正确的道路上决定使用FileSystemWatcher
我同意大卫,使用FileSystemWatcher意味着你将只需要计算目录的变化。
使用Changed事件。
你知道你可以通过Windows在NTFS卷上执行配额吗? 当操作系统本身支持这个时,为什么要自己推出?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。