CString FileName[1000];
int i = 0;
void find(CString lpPath)
{
CString szFind;
CString szFile;
WIN32_FIND_DATA FindFileData;
szFind = lpPath;
szFind += L"\\*.*"; //這裡如果改成*.txt,就只能遍歷指定資料夾裡面的TXT,不會遍歷子資料夾的。
HANDLE hFinds =::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFinds) return;
while(TRUE)
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
if(FindFileData.cFileName[0]!=".")//一個目錄中,.表示的是當前目錄, ..表示的是上層目錄,所以這裡過濾它
//如果不是.號的目錄,就進去又遍歷。當然如果你不需要這個,就把下面第四行程式碼屏掉
szFile = lpPath;
szFile += L"\\";
szFile += FindFileData.cFileName;
find(szFile); //遞迴遍歷子資料夾
}
else
//上面判斷了,如果不是資料夾,那就肯定是檔案了,把這個檔案記錄起來
CString str = lpPath + L"\\"+ FindFileData.cFileName;
FileName[i++] = str; //得到檔案,儲存到一個CString全域性陣列中
if(!FindNextFile(hFinds,&FindFileData)) break;
FindClose(hFinds);
就是這樣子就行了
CString FileName[1000];
int i = 0;
void find(CString lpPath)
{
CString szFind;
CString szFile;
WIN32_FIND_DATA FindFileData;
szFind = lpPath;
szFind += L"\\*.*"; //這裡如果改成*.txt,就只能遍歷指定資料夾裡面的TXT,不會遍歷子資料夾的。
HANDLE hFinds =::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFinds) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!=".")//一個目錄中,.表示的是當前目錄, ..表示的是上層目錄,所以這裡過濾它
{
//如果不是.號的目錄,就進去又遍歷。當然如果你不需要這個,就把下面第四行程式碼屏掉
szFile = lpPath;
szFile += L"\\";
szFile += FindFileData.cFileName;
find(szFile); //遞迴遍歷子資料夾
}
}
else
{
//上面判斷了,如果不是資料夾,那就肯定是檔案了,把這個檔案記錄起來
CString str = lpPath + L"\\"+ FindFileData.cFileName;
FileName[i++] = str; //得到檔案,儲存到一個CString全域性陣列中
}
if(!FindNextFile(hFinds,&FindFileData)) break;
}
FindClose(hFinds);
}
就是這樣子就行了