获取指定目录下(包括子目录)的指定后缀的文件
#include <DIRECT.H>
/********************************************************/
/* Syntax:
/* void FindMyFile(CString strPath, CString strSuffix, CStringArray& arrPath)
/* Remarks:
/* Find files with specified suffix in specified directory.
/* Return Values:
/* None.
/* Parameters:
/* strPath:
/* Directory for search.
/* strSufffix:
/* File Suffix.
/* arrPath:
/* A array used to store the full Path of file.
/* Author:
/* lixiaosan
/* Create Date:
/* April 07 2006
/********************************************************/
void CTest6Dlg::FindMyFile(CString strPath,
CString strSuffix,
CStringArray& arrPath)
{
BOOL bFind, bFindSuffix;
CFileFind tempFind, tempFind1;
_chdir(strPath);
bFind = tempFind.FindFile(_T("*.*"));
while ( bFind )
{
bFind = tempFind.FindNextFile();
if (tempFind.IsDirectory())
{
if ( !tempFind.IsDots() )
{
CString strTempPath;
strTempPath = tempFind.GetFilePath();
FindMyFile(strTempPath);
}
}
}
_chdir(strPath);
bFindSuffix = tempFind1.FindFile(_T("*.*"));
while (bFindSuffix)
{
bFindSuffix = tempFind1.FindNextFile();
CString strFilePath, strFileName;
if ( !tempFind1.IsDirectory() && !tempFind1.IsDots() )
{
strFilePath = tempFind1.GetFilePath();
strFileName = tempFind1.GetFileName();
strFileName.MakeUpper();
strSuffix.MakeUpper();
if ( strFileName.Right(3) == strSuffix )
{
arrPath.Add(strFilePath);
}
}
}
tempFind.Close();
tempFind1.Close();
}
调用方法
CStringArray arrFilePath;
CString strTemp;
FindMyFile(_T("d:\\temp\\"), _T("txt"), arrFilePath);
for(int i=0; i<arrFilePath.GetSize(); i++)
{
strTemp += arrFilePath[i] + _T("\r\n");
}
AfxMessageBox(strTemp);