首页 文章

C#/ C - 如何获取路径太长或权限被拒绝的目录大小?

提问于
浏览
4

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

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

所有这些意味着,至少在C#中,您无法扫描C:\驱动器并获得真正的数字,因为您必须跳过任何引发异常的目录或文件 .

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

怎么能实现这一目标?谢谢 .

1 回答

  • 2

    不是很容易但是它可以完成,虽然我不确定你是否可以克服权限问题,但实际上你要做的就是进入较低级别并直接读取NTFS主文件表,如下所示piece of codethis caring developer分享,他从另一个这样的开发者那里得到了这个想法 .

    这是a reference,它会帮助你 . 谷歌'NTFS architecture'或设计更多规格 . 请分享你的一些工作和研究:)这将对许多人有所帮助

    EditAnother project这可能会对你有所帮助 . 经过测试,它表示它仅支持NTFS 3.0或更高版本 .

相关问题