获取分区中的文件数

时间:2011-04-06 19:51:29

标签: c# .net visual-c++ c++-cli

我在C ++ CLI中编写了一个代码,可以遍历系统中的所有文件。我想以编程方式知道系统中存在的文件数量,而不是逐个计算文件! 另外......这个数字在扫描进度条时会有用吗?

2 个答案:

答案 0 :(得分:2)

如果您使用的是NTFS,可以调用FSCTL_GET_NTFS_VOLUME_DATA IoControl来获取卷的大量数据。文件数量最多为MftValidDataLength / BytesPerFileRecordSegment。请记住,这是卷上可以包含的最大文件数,因此实际数量将始终较少。

我也希望你使用FSCTL_ENUM_USN_DATA来阅读文件,而不是走目录树(这是不准确和容易出错的)。这个帖子有一个例子,有人在C#中做这件事:http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/c1550294-d121-4511-ac32-31551497f64e/

答案 1 :(得分:1)

这在很大程度上取决于正在使用的文件系统(以及模拟用户持有的管理权限:))

您可能会找到here的内容,或者您​​可以通过更多详细信息来增强您的问题