C++程序有时需要遍历某个文件夹中的所有文件夹及文件,要处理文件夹中的所有文件,如果文件夹中包含子文件夹时则需要递归遍历(函数递归调用去实现)。
下面给出调用API函数FindFirstFile和FindNextFile实现文件夹中所有文件的遍历,去计算文件夹中所有文件的大小,实现思路是:
1)先在根路径中遍历,如果是文件,则直接获取文件大小;
2)如果是文件夹,则递归调用当前函数。
3)直到遍历完当前文件夹中的所有文件为止。
相关代码如下:
// 计算文件夹的大小(文件夹中所有文件的大小),注意调用前请将n64FileSzie清零
BOOL CalcFileFolderSize( const CString& strFileDir, __int64& n64FileSzie )
{
CString strFindFileName = strFileDir + _T("\\*.*");
WIN32_FIND_DATA wfd;
HANDLE hFindFile = FindFirstFile( strFindFileName, &wfd );
if ( hFindFile == INV