如何使FindFirstFile打开指定路径的子目录

How do you make FindFirstFile open a subdirectory of the path you gave it?

本文关键字:路径 子目录 何使 FindFirstFile      更新时间:2023-10-16

我想遍历目录的所有子目录,找到所有.snt文件。但是FindFirstFile和FindNextFile只搜索给定的目录,而不搜索其子目录。

具体来说,我正在搜索路径F:\Program Files(x86)\Amnia\sounds\
sounds文件夹的所有子文件夹我尝试将F:\Program Files (x86)\Amnesia\sounds\*\*.snt传递给FindFirstFile,但它返回垃圾。正确的方法是什么?

#include <windows.h>
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
void main()
{
    char  path[100]="F:\Program Files (x86)\Amnesia\sounds\*\*.snt";
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
    hFind = FindFirstFile(path, &FindFileData);
    printf("The first file found is %sn",FindFileData.cFileName);
    getch();
}

嗯,"手动"递归。

下面是递归的概念。缺少的是基于扩展名的文件检测。

void file_search_rec(const char *folder)
{
    char path[MAX_PATH] ;
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
    strcpy(path, folder) ;
    strcat(path, "\*") ;
    FindFirstFile(path, &FindFileData) ;
    if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
        char subpath[MAX_PATH] ;
        strcpy(subpath, folder) ;
        strcat(subpath, FindFileData.cFileName) ;
        // here make the recursive call on subpath
        file_search_rec(subpath) ;
    }
}