扫描FAT32磁盘中文件的最快方法是什么? 我想在C++中尽快扫描FAT32磁盘(我只需要文件路径和文件名), 扫描FAT32磁盘上的每个文件。 有什么API可以做到这一点吗?

扫描FAT32磁盘中文件的最快方法是什么? 我想在C++中尽快扫描FAT32磁盘(我只需要文件路径和文件名), 扫描FAT32磁盘上的每个文件。 有什么API可以做到这一点吗?,c++,windows,disk,fat32,C++,Windows,Disk,Fat32,术语“扫描”并没有很好的定义。是否要读取每个文件的每个字节?最简单的方法是使用目录列表。首先按下根目录。然后,只要目录列表不是空的,就调用FindFirstFile/FindNextFile枚举所有文件和子目录。将子目录添加到目录列表中,并读取遇到的文件 更新:出于您的目的,FindFirstFileEx(FindExInfoBasic)就足够了。您仍然希望一次只处理一个目录(广度优先),而不是在看到子目录时立即输入它们(深度优先)。这会更快,因为单个目录中的FAT32目录项存储在一起,但子目录

术语“扫描”并没有很好的定义。是否要读取每个文件的每个字节?最简单的方法是使用目录列表。首先按下根目录。然后,只要目录列表不是空的,就调用
FindFirstFile/FindNextFile
枚举所有文件和子目录。将子目录添加到目录列表中,并读取遇到的文件

更新:出于您的目的,
FindFirstFileEx(FindExInfoBasic)
就足够了。您仍然希望一次只处理一个目录(广度优先),而不是在看到子目录时立即输入它们(深度优先)。这会更快,因为单个目录中的FAT32目录项存储在一起,但子目录通常不会与父目录相邻存储。

检查此线程:

它实际上描述了FindFirstFile/FindNextFile,但如果您需要更快的速度,应该使用内核。

但是,线程中描述的索引解决方案不适用于FAT32系统-credit MSalters

请注意,线程中暗示的索引解决方案采用NTFS技术日志;本主题中的FAT32不包括该选项。谢谢mAlters。我改变了我的答案,加入了这个。尽管如此,我发布这篇文章的主要原因是检查另一个线程:)