我需要做一种扫描,我已经完成了第一部分,程序将扫描目录通知并将文件与其他目录分开,但我还需要扫描其他目录,看看我的代码:
void CompleteScan(const char root[], WCHAR *Extension,std::vector<FileStruct> &Return_Files,std::vector<WIN32_FIND_DATA> &Return_Directorys){
std::vector<FileStruct> files;
std::vector<WIN32_FIND_DATA> dir;
Scan(root, Extension, files, dir);
if(dir.size() > 0){
for(int i = 0; i < dir.size(); i++){
/* Here is directory by directory scan */
}
}
命令 Scan 返回文件结构的向量(目录和WIN32_FIND_DATA)和目录向量,但我需要扫描所有目录,例如:
"C:\"程序扫描它并返回"C:\"上的所有目录,然后再扫描其中的所有目录,但我不知道我必须做什么才能让它扫描"C:\"上的所有目录目录,例如查看此列表:
- C:\ {确定}
- C:\Files {OK}
- C:\Files\First File {Can't}
- C:\Files\第一个文件\第二个文件 {不能}
您必须为找到的每个目录递归调用CompleteScan
函数。
递归!如果我删除了任何标点符号,请原谅;我没有一个Windows盒子来编译/测试。
/**
* @brief Accumulates the files and directories under the given root directory
* into the output vectors allfiles and alldirs that you provide.
**/
void CompleteScan(const char root[],
WCHAR *Extension,
std::vector<FileStruct> &allfiles,
std::vector<WIN32_FIND_DATA> &alldirs)
{
std::vector<WIN32_FIND_DATA> subdirs;
// Assuming your Scan function does what needs to be done with the allfiles
// vector. If not, more code needed somewhere here to handle that.
Scan(root, Extension, allfiles, subdirs);
if(dir.size() > 0){
for(int i = 0; i < dir.size(); i++){
// Visit this directory
alldirs.push_back(dir);
// Visit all descendant directories
CompleteScan(dir.cFileName, Extension, allfiles, alldirs);
}
}
}