关于如何获取目录大小有很多问题和答案 - 递归地总结文件的长度 - 很容易 .
然而,我看到的所有答案都是不完整的 . 在递归迭代卷的地方,有一些目录会抛出异常 - 例如 UnauthorizedAccessException
. 我还注意到在Win 7中有超过260个字符的路径,这会引发一个 PathTooLongException
.
所有这些意味着,至少在C#中,您无法扫描C:\驱动器并获得真正的数字,因为您必须跳过任何引发异常的目录或文件 .
我正在寻找一种方法来获取存储在磁盘上给定目录的字节的正确,真实,准确的数字 . 我不在乎是否必须进入低级别并编写一些C,或者调用Win API .
怎么能实现这一目标?谢谢 .
1 回答
不是很容易但是它可以完成,虽然我不确定你是否可以克服权限问题,但实际上你要做的就是进入较低级别并直接读取NTFS主文件表,如下所示piece of code由this caring developer分享,他从另一个这样的开发者那里得到了这个想法 .
这是a reference,它会帮助你 . 谷歌'NTFS architecture'或设计更多规格 . 请分享你的一些工作和研究:)这将对许多人有所帮助
Edit :Another project这可能会对你有所帮助 . 经过测试,它表示它仅支持NTFS 3.0或更高版本 .