2012-09-08 85 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; 
}