有點麻煩:
#include <iostream>
#include "windows.h"
#include <string.h>
#include <Strsafe.h>
using namespace std;
//傳入要周遊的檔案夾路徑,并周遊相應檔案夾
void processPath(const wchar_t Dir)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind=INVALID_HANDLE_VALUE;
wchar_t DirSpec[MAX_PATH];
StringCchCopy(DirSpec,MAX_PATH,Dir);
StringCchCat(DirSpec,MAX_PATH,TEXT("\\*"));
hFind=FindFirstFile(DirSpec,&FindFileData);
if (hFind==INVALID_HANDLE_VALUE)
{
FindClose(hFind);
return;
}
while (FindNextFile(hFind,&FindFileData) != 0)
{
//檔案,直接處理
if((FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) ==0)
{
//processFile()
}
//特殊目錄,不處理。
if ( wcscmp(FindFileData.cFileName,L"." )==0
|| wcscmp(FindFileData.cFileName,L"..")==0)
{
continue;
}
//目錄,遞歸處理
wchar_t DirAdd[MAX_PATH];
StringCchCopy(DirAdd,MAX_PATH,Dir);
StringCchCat(DirAdd,MAX_PATH,TEXT("\\"));
StringCchCat(DirAdd,MAX_PATH,FindFileData.cFileName);
processPath(DirAdd);
}
FindClose(hFind);
}
int _tmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] )
{
locale loc( "chs" ); //支援中文輸出,否則wchar可能無法輸出值為中文的變量
wcout.imbue( loc );
processPath(L"D:\\Test"); //周遊指定的檔案夾,此處檔案路徑可按具體情況修改
system("pause");
return 0;
}
有的朋友問,如果要使用char怎麼辦?
這個也簡單, FindFirstFileA(),在看看參數差異。