69,373
社区成员
发帖
与我相关
我的任务
分享
#include <cstdio>
#include <cstring>
#include <iostream>
#include <tchar.h>
#include <windows.h>
using namespace std;
typedef long long int64;
typedef void (*ENUM_FILES_FUNCTION)(const TCHAR*, LPWIN32_FILE_ATTRIBUTE_DATA);
#define SYS_IS_DIRECTORY(f) (f & FILE_ATTRIBUTE_DIRECTORY)
#define SYS_IS_HIDDEN(f) (f & FILE_ATTRIBUTE_HIDDEN)
#define SYS_IS_READONLY(f) (f & FILE_ATTRIBUTE_READONLY)
#define SYS_IS_SYSTEM(f) (f & FILE_ATTRIBUTE_SYSTEM)
void EnumFiles(const TCHAR* szSourceDir, ENUM_FILES_FUNCTION callback_fun)
{
if (!szSourceDir) return;
WIN32_FIND_DATA FindFileData;
WIN32_FILE_ATTRIBUTE_DATA FindFileAttr;
HANDLE hFind = INVALID_HANDLE_VALUE;
TCHAR currDir[MAX_PATH];
TCHAR Result[MAX_PATH];
_tcsncpy(currDir, szSourceDir, _tcslen(szSourceDir) + 1);
_tcsncat(currDir, _T("\\*"), 3);
hFind = FindFirstFile(currDir, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE) return;
do
{
if (*FindFileData.cFileName == '.') continue;
::_stprintf(Result, _T("%s\\%s"), szSourceDir, FindFileData.cFileName);
cout << FindFileData.cFileName << endl;
if (callback_fun && GetFileAttributesEx(Result, GetFileExInfoStandard, &FindFileAttr))
{
(*callback_fun)(Result, &FindFileAttr);
}
} while (FindNextFile(hFind, &FindFileData));
}
int main()
{
EnumFiles("d:\\123", 0);
return 0;
}