CSDN相关解释:
int count;
int CGetFileCountDlg::GetFileCount(CString szPath)
{
count = 0;
Recurse(szPath);
return count;
}
void CGetFileCountDlg::Recurse(LPCTSTR pstr)
{
CFileFind finder;
// build a string with wildcards
CString strWildcard(pstr);
strWildcard += _T("//*.*");
// start working for files
BOOL bWorking = finder.FindFile(strWildcard);
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDots()) //判断是否是文件
continue;
if(!finder.IsDirectory())
{
count ++;
}
// if it's a directory, recursively search it
if (finder.IsDirectory()) //判断是否是文件夹 //路径
{
CString str = finder.GetFilePath();
Recurse(str);
}
}
finder.Close();
}
count 就是目录下文件的个数
----------------------------------------------------------------------------
SDK的
HANDLE hFind;
WIN32_FIND_DATA dataFind;
BOOL bMoreFiles=TRUE;
int iCount=0;//统计文件数的变量
//m_strDir就是你要指定的路径
hFind=FindFirstFile(m_strDir+"/*.*",&dataFind);//找到路径中所有文件
//遍历路径中所有文件
while(hFind!=INVALID_HANDLE_VALUE&&bMoreFiles==TRUE)
{
if(dataFind.dwFileAttributes!=FILE_ATTRIBUTE_DIRECTORY)//判断是否是文件
{
iCount++;
}
bMoreFiles=FindNextFile(hFind,&dataFind);
}
FindClose(hFind);
其实上的代码可以在MSDN或者SDK中找到,这里解释一下了。
//计算某一目录下某一种后缀名的文件数量
//dirName是目录,filter为通配符
int FileCount(const CString &dirName,const CString &filter)
{
int fileCount = 0;
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
DWORD dwError;
CString wildcardPath = dirName + _T("//")+filter;
BOOL bMoreFiles=TRUE;
hFind = FindFirstFile(wildcardPath,&FindFileData);
while (hFind != INVALID_HANDLE_VALUE && bMoreFiles)
{
fileCount++;
bMoreFiles = FindNextFile(hFind,&FindFileData);
}
dwError = GetLastError();
FindClose(hFind);
return fileCount;
}