当前位置:编程学习 > C/C++ >>

可控制遍历深度的文件搜索类

view plaincopyprint?
//---------------------------------------------------------------------------  
  
#ifndef SearchFilesUnitH  
#define SearchFilesUnitH  
//---------------------------------------------------------------------------  
  
#include <windows.h>  
#include <stdio.h>  
  
typedef void(__stdcall *PSEARCHCALLBACK)(LPCTSTR);  
typedef void(__stdcall *PDIRCOMPLETEDCALLBACK)(LPCTSTR);  
  
class CSearchFile  
{  
public:  
    // 无深度初始化构造函数,此时扫描深度不受限制  
    CSearchFile()  
    {  
        m_depthLevel = -1;  
    }  
      
    // 扫描深度初始化构造函数  
    CSearchFile(int depthLevel)  
    {  
        m_depthLevel = depthLevel;  
    }  
private:  
    int m_depthLevel;  
  
private:  
    BOOL DirectoryExist(LPCTSTR lpszDir)  
    {  
        DWORD dwAttribute = ::GetFileAttributes(lpszDir);  
        if (dwAttribute != 0xFFFFFFFF)  
        {  
            return ((dwAttribute & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY);  
        }  
        return FALSE;  
    }  
public:  
    BOOL SearchFile(  
            LPCTSTR root                                    /* 搜索文件的根目录 */  
            , PSEARCHCALLBACK pFoundCallback                /* 文件搜到后的 Callback 
                                                            在此Callback中可以实现 
                                                            文件类型的过滤,文件删除,复制等等 
                                                            与文件相关的操作 
                                                            */  
            , PDIRCOMPLETEDCALLBACK pDirCompletedCallback   /* 完成一个子目录后的 Callback 
                                                            在此Callback中可以配合上个Callback 
                                                            的文件删除功能,删除文件夹 
                                                            */  
            , int depthLevel = 0  
            );  
};  
#endif  
.cpp 文件
[cpp]view plaincopyprint?
//---------------------------------------------------------------------------  
#include "SearchFilesUnit.h"  
//---------------------------------------------------------------------------  
  
  
BOOL CSearchFile::SearchFile(  
                        LPCTSTR root                                    /* 搜索文件的根目录 */  
                        , PSEARCHCALLBACK pFoundCallback                /* 文件搜到后的 Callback 
                                                                        在此Callback中可以实现 
                                                                        文件类型的过滤,文件删除,复制等等 
                                                                        与文件相关的操作 
                                                                        */  
                        , PDIRCOMPLETEDCALLBACK pDirCompletedCallback   /* 完成一个子目录后的 Callback 
                                                                        在此Callback中可以配合上个Callback 
                                                                        的文件删除功能,删除文件夹 
                                                                        */  
                        , int depthLevel  
                        )  
{  
    char szPath[MAX_PATH] = {0};  
    WIN32_FIND_DATA stWFD;  
 
补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,