| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
wdey
10年前发布

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); // 关闭查找句柄     }