Windows遍歷目錄文件

可以使用FindFirstFile, FindNextFile, FindClose遍歷指定目錄下的目錄和文件。

以下函數遍歷並打印指定路徑path下的所有文件和目錄:

#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <string.h>
#include <strsafe.h>

void FileTraverse(TCHAR* path)
{
    TCHAR  szDir[MAX_PATH];
    HANDLE hFind = INVALID_HANDLE_VALUE;
    WIN32_FIND_DATA fd;

    StringCchCopy(szDir, MAX_PATH, path);
    StringCchCat(szDir, MAX_PATH, TEXT("\\*"));    //需要附加"\\*",否則,不會遍歷所有文件

    hFind = FindFirstFile(szDir, &fd);
    if (INVALID_HANDLE_VALUE == hFind)
    {
        //printf("Find file failed!\n");
        return;
    }
    do
    {
        if (fd.cFileName[0] != TEXT('.'))    //跳過當前目錄'.'以及上級目錄'..'
        {
            if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)    //目錄
            {
                _tprintf(TEXT("%s\\%s   <DIR>\n"), path, fd.cFileName);

                StringCchCopy(szDir, MAX_PATH, path);
                StringCchCat(szDir, MAX_PATH, TEXT("\\"));
                StringCchCat(szDir, MAX_PATH, fd.cFileName);

                FileTraverse(szDir);    //遞歸遍歷子目錄
            }
            else    //文件
            {
                _tprintf(TEXT("%s\n"), fd.cFileName);
            }
        }
    } while (FindNextFile(hFind, &fd));

    FindClose(hFind);
} 
發佈了42 篇原創文章 · 獲贊 5 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章