c++使用win32 api windows下遍歷文件夾

wdey 9年前發布 | 2K 次閱讀 C/C++

#include <stdio.h>

include <windows.h>

BOOL IsRoot(LPCTSTR lpszPath) { TCHAR szRoot[4]; wsprintf(szRoot, "%c:\", lpszPath[0]); return (lstrcmp(szRoot, lpszPath) == 0); }

void FindInAll(::LPCTSTR lpszPath) { TCHAR szFind[MAX_PATH]; lstrcpy(szFind, lpszPath); if (!IsRoot(szFind)) lstrcat(szFind, "\"); lstrcat(szFind, "."); // 找所有文件 WIN32_FIND_DATA wfd; HANDLE hFind = FindFirstFile(szFind, &wfd); if (hFind == INVALID_HANDLE_VALUE) // 如果沒有找到或查找失敗 return;

do
{
    if (wfd.cFileName[0] == '.')
        continue; // 過濾這兩個目錄
    if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
        TCHAR szFile[MAX_PATH];
        if (IsRoot(lpszPath))
            wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
        else
            wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
        FindInAll(szFile); // 如果找到的是目錄,則進入此目錄進行遞歸
    }
    else
    {
        TCHAR szFile[MAX_PATH];
        if (IsRoot(lpszPath))
            wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
        else
            wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
        printf("%s\n",szFile);
        // 對文件進行操作
    }
} while (FindNextFile(hFind, &wfd));
FindClose(hFind); // 關閉查找句柄

}</pre>

 本文由用戶 wdey 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!