c++使用win32 api windows下遍歷文件夾
#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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!