int find_all_files(const char * lpPath) { char szFind[MAX_PATH]; WIN32_FIND_DATA FindFileData; strcpy(szFind,lpPath); strcat(szFind,"\\*.*"); HANDLE hFind=::FindFirstFile(szFind,&FindFileData); if(INVALID_HANDLE_VALUE == hFind) return -1; do { if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if(strcmp(FindFileData.cFileName,".")!=0 && strcmp(FindFileData.cFileName, "..")!=0) { //发现子目录,递归之 char szFile[MAX_PATH] = {0}; strcpy(szFile,lpPath); strcat(szFile,"\\"); strcat(szFile,FindFileData.cFileName); find_all_files(szFile); } } else { //找到文件,处理之 std::cout << lpPath << "\\" << FindFileData.cFileName << std::endl; } }while(::FindNextFile(hFind,&FindFileData)); ::FindClose(hFind); return 0; }