4

有很多关于如何获取目录大小的问题和答案 - 递归地求和文件的长度 - 很容易。

但是,我看到的所有答案都不完整。例如,在您递归迭代卷的地方,有一些目录会引发异常UnauthorizedAccessException。我还注意到在 Win 7 中有超过 260 个字符的路径,这会引发PathTooLongException.

所有这一切意味着,至少在 C# 中,您无法扫描 C:\ 驱动器并获取卷大小的真实数字,因为您必须跳过任何引发异常的目录或文件。

我正在寻找一种方法来获取存储在磁盘上给定目录的字节的正确、真实、准确的数字。我不在乎我是否必须走低级并编写一些 C++,或者调用 Win API。

如何做到这一点?谢谢。

4

1 回答 1

2

这并不容易,但可以做到,虽然我不确定你是否能克服权限问题,但你必须做的是进入较低级别并直接读取 NTFS 主文件表,如这篇精彩的文章所示这位有爱心的开发人员从另一个这样的开发人员那里得到了这个想法。

这是一个可以帮助您的参考。谷歌“NTFS 架构”或设计更多规格。并请分享您的一些工作和研究:) 这将对许多人有所帮助

编辑另一个可以帮助你的项目。经过测试,它说它只支持 NTFS 3.0 或更高版本。

于 2012-11-17T11:00:27.490 回答