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

该博客介绍了如何使用C++编写一个函数`FindMyFile`,该函数能够遍历指定目录及其子目录,查找并收集所有具有特定后缀的文件路径。通过`CFileFind`类进行文件查找,并将匹配的文件路径存储在字符串数组中。示例代码展示了如何调用这个函数来查找`.txt`文件并显示结果。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值