实现:递归遍历目录

#include<stdio.h>
#include<windows.h>

DWORD EnumerateFileInDirectory(LPCWSTR szPath){
    WIN32_FIND_DATA FindFileData;
    HANDLE hListFile;
    wchar_t szFilePath[MAX_PATH];
    wchar_t szFullPath[MAX_PATH]; //绝对路径

    lstrcpy(szFilePath, szPath);
    lstrcat(szFilePath, L"\\*");

    hListFile = FindFirstFile(szFilePath, &FindFileData);
    if(hListFile == INVALID_HANDLE_VALUE){
        printf("错误:%d \n", GetLastError());
        return 1;
    }else {
        do {
            if (lstrcmp(FindFileData.cFileName, L".") == 0 || lstrcmp(FindFileData.cFileName, L"..") == 0){
                continue;
            }


            wsprintf(szFullPath, L"%ls\\%ls", szPath, FindFileData.cFileName);
            //printf("%ls\\%ls", szPath, FindFileData.cFileName);
            printf("\n%ls\t", szFullPath);
            //if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) { //判断文件的属性是否为隐藏,如果是的话 输出个前缀为HIDDEN
            //  printf("<HIDDEN> ");
            //}
            if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { //判断是否是目录,如果是的话 输出个前缀为DIR
                printf("\t<DIR>");
                EnumerateFileInDirectory(szFullPath);
            }
            
            if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE) {
                printf("\t<FILE>");
            }

            //printf("\n");

        } while (FindNextFile(hListFile, &FindFileData));
    }
    printf("\n");
    return 0;
}



int main() {
    /*
     * API
     * FindFirstFile
     * FindNextFile
     * WIN32_FIND_DATA
    */
    EnumerateFileInDirectory(L"C:\\Users\\dell\\source\\repos\\msgboxtest");
    system("pause");
    return 0;
}

结果如下:

猜你喜欢

转载自www.cnblogs.com/zpchcbd/p/11982595.html