获取指定目录下(包括子目录)的指定后缀的文件

来源:互联网 发布:ubuntu iptables 编辑:程序博客网 时间:2024/05/22 04:43

获取指定目录下(包括子目录)的指定后缀的文件
#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);

0 0