2012-09-08 142 views
1
int main(void) 
{ 

    HANDLE hFoundFile; 
    WIN32_FIND_DATA foundFileData; 

    SetCurrentDirectory(TEXT("C:\\")); 

    hFoundFile = FindFirstFileEx(TEXT("*"),FINDEX_INFO_LEVELS::FindExInfoBasic,&foundFileData ,FINDEX_SEARCH_OPS::FindExSearchLimitToDirectories ,NULL , NULL); 

    do 
    { 
     wprintf(TEXT("%s\n"),foundFileData.cFileName); 

    } 
    while(FindNextFile(hFoundFile,&foundFileData)); 

    system("Pause"); 
    return 0; 
} 

爲什麼它也會輸出「常規」文件,但FINDEX_SEARCH_OPS::FindExSearchLimitToDirectories選項顯式傳遞給函數?僅搜索目錄

回答

1

How to recursively traverse directories in C on Windows

  • 注:由於標誌是在2001年加入之前,這一點任何系統(例如Windows 2000中,建立在舊版本的Samba的NAS設備)將不支持該標誌。 - 雷蒙德陳

    WIN32_FIND_DATA FindFileData; 
    do { 
    
    if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
    
    
    
    
    } 
    while(FindNextFile(hFindFile, &FindFileData)); 
    

和你的代碼中:

int main(void) 
{ 

    HANDLE hFoundFile; 
    WIN32_FIND_DATA foundFileData; 

    SetCurrentDirectory(TEXT("C:\\")); 

    hFoundFile = FindFirstFileEx(TEXT("*"),FINDEX_INFO_LEVELS::FindExInfoBasic,&foundFileData ,FINDEX_SEARCH_OPS::FindExSearchLimitToDirectories ,NULL , NULL); 

    do 
    { 
    if (foundFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
     wprintf(TEXT("%s\n"),foundFileData.cFileName); 

    } 
    while(FindNextFile(hFoundFile,&foundFileData)); 

    system("Pause"); 
    return 0; 
}