递归实现遍历
void DIR_FUN(TCHAR* szPath)
{
if(!szPath)
return;
TCHAR szTmpPath[MAX_PATH] = {0};
HANDLE hHandle;
WIN32_FIND_DATA wfd;
StringCchCopy(szTmpPath, MAX_PATH, szPath);
StringCchCat(szTmpPath, MAX_PATH, TEXT("\\*"));
hHandle = FindFirstFile(szTmpPath, &wfd);
if(hHandle != INVALID_HANDLE_VALUE)
{
while(FindNextFile(hHandle, &wfd))
{
if(wfd.cFileName[0] == '.')
continue;
if(wfd.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) //directory
{
StringCchCopy(szTmpPath, MAX_PATH, szPath);
StringCchCat(szTmpPath, MAX_PATH, TEXT("\\"));
StringCchCat(szTmpPath, MAX_PATH, wfd.cFileName);
_tprintf(TEXT(" %s <DIR>\n"), szTmpPath);
DIR_FUN(szTmpPath);
}
else //file
{
StringCchCopy(szTmpPath, MAX_PATH, szPath);
StringCchCat(szTmpPath, MAX_PATH, TEXT("\\"));
_tprintf(TEXT(" %s%s \n"), szTmpPath, wfd.cFileName);
}
}
}
FindClose(hHandle);
}
main函数调用
int _tmain(int argc, TCHAR *argv[])
{
//find_path(argv[1]);
DIR_FUN(argv[1]); // argv[1] is path
system("pause");
return 0;
}