使用FindFirstFile,FindNextFile遍歷一個文件夾


//遍歷文件夾函數 void TraverseFolder(LPCTSTR lpPath) { TCHAR szFind[MAX_PATH] = {_T("\0")}; WIN32_FIND_DATA findFileData; BOOL bRet; _tcscpy_s(szFind, MAX_PATH, lpPath); _tcscat_s(szFind, _T("\\*.*")); //這里一定要指明通配符,不然不會讀取所有文件和目錄 HANDLE hFind = ::FindFirstFile(szFind, &findFileData); if (INVALID_HANDLE_VALUE == hFind) { return; } //遍歷文件夾 while (TRUE) { if (findFileData.cFileName[0] != _T('.')) {//不是當前路徑或者父目錄的快捷方式 _tprintf(_T("%s\\%s\n"), lpPath, findFileData.cFileName); if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {//這是一個普通目錄 //設置下一個將要掃描的文件夾路徑 _tcscpy_s(szFind, MAX_PATH, lpPath); _tcscat_s(szFind, _T("\\")); _tcscat_s(szFind, findFileData.cFileName); ///_tcscat_s(szNextDir, _T("\\*")); //遍歷該目錄 TraverseFolder(szFind); } } //如果是當前路徑或者父目錄的快捷方式,或者是普通目錄,則尋找下一個目錄或者文件 bRet = ::FindNextFile(hFind, &findFileData); if (!bRet) {//函數調用失敗 //cout << "FindNextFile failed, error code: " // << GetLastError() << endl; break; } } ::FindClose(hFind); }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM