#ifndef __FIND_FILE2_20151006__ #define __FIND_FILE2_20151006__ #pragma once class findfile2 { public: findfile2(void); virtual ~findfile2(void); protected: INT m_nlimit; CStringArray m_vtEffctExt; CStringArray *m_pfiles; CStringArray *m_pnames; CStringArray *m_pfolders; CStringArray *m_pnames_noext; CStringArray *m_pvtfiles_sth; // s小图; CStringArray *m_pvtfiles_mth; // m小图; public: static BOOL iscorrectext(IN const CString &fext, OUT CString* lpMistakenExt = NULL); static int match(IN CONST CString &sExt, IN CONST CString &sFile); static void keepdownext(IN CONST CString &keepExt, IN CStringArray &vtfiles); static void keepoutext(IN CONST CString &removeext, IN CStringArray &vtfiles); static void subgroupExt(IN CONST CString &ext1, IN CStringArray &vt1, IN CONST CString &ext2, IN CStringArray &vt2); // 分组扩展名; static CString getfilename(IN CONST CString &file); protected: INT getlimit() const { return m_nlimit; } void setlimit(IN CONST INT &nlimit); void groupExt(); void groupExt( IN CONST CString &strExts, IN CStringArray &AryExts ); inline INT checklimit() { return m_pfiles->GetSize() == getlimit(); } BOOL IsaDirectory(CONST CString &sDirectory) { return (FILE_ATTRIBUTE_DIRECTORY == GetFileAttributes(sDirectory)); } // 查找所有文件,包括子文件夹名、文件名、文件路径; void findall(IN CONST CString& folder, IN CONST CString& findext); // 只返回2级子目录名; void findsubfolder(IN CONST CString& folder); // 只返回所有子目录名; void findallsubfolder(IN CONST CString& folder); // 查找文件路径,以及查找子目录的文件路径,但不获取子目录名; void findfiles_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext); // 查找文件路径,不查找子目录的文件; void findfiles_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext); // 查找文件路径,以及查找子目录的文件路径,同时获取子目录名; void findfiles_within_subfolder(IN CONST CString& folder, IN CONST CString& findext); // 查找文件名称,以及查找子目录的文件名称,但不获取子目录名(返回的文件包含扩展名); void findnames_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext); // 查找文件名称,不查找子目录的文件(返回的文件包含扩展名); void findnames_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext); // 查找文件名称,以及查找子目录的文件名称,同时获取子目录名(返回的文件包含扩展名); void findnames_within_subfolder(IN CONST CString& folder, IN CONST CString& findext); // 查找文件名称,以及查找子目录的文件名称,但不获取子目录名(返回的文件不含扩展名); void findnames_findin_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext); // 查找文件名称,不查找子目录的文件(返回的文件不含扩展名); void findnames_findout_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext); // 查找文件名称,以及查找子目录的文件名称,同时获取子目录名(返回的文件不含扩展名); void findnames_within_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext); // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,但不获取子目录名;(返回的文件包含扩展名); void findfilesnames_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext); // 查找文件路径和文件名,不查找子目录;(返回的文件包含扩展名); void findfilesnames_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext); // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,且获取子目录名;(返回的文件包含扩展名); void findfilesnames_within_subfolder(IN CONST CString& folder, IN CONST CString& findext); // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,但不获取子目录名(返回的文件不含扩展名); void findfilesnames_findin_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext); // 查找文件路径和文件名,不查找子目录(返回的文件不含扩展名); void findfilesnames_findout_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext); // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,且获取子目录名(返回的文件不含扩展名); void findfilesnames_within_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext); // 查找指定文件名和扩展名的文件; //void findfiles_bynames_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN CStringArray &names); //void findfiles_bynames_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN CStringArray &names); //void findfiles_bynames_within_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN CStringArray &names); // 查找指定文件名和扩展名的文件; void findfiles_bynames_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN /*CONST*/ CStringArray &exts, IN CStringArray &names); void findfiles_bynames_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN /*CONST*/ CStringArray &exts, IN CStringArray &names); void findfiles_bynames_within_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN /*CONST*/ CStringArray &exts, IN CStringArray &names); ////////////////////////////////////////////////////////////////////////// // 查找到001.jpg时,同时查找s001.jpg和m001.jpg,如果没有小图需要用""表示; // findex不能够多个组合,如果要查找多个扩展名的,尽量分开; // 查找文件路径,以及查找子目录的文件路径,但不获取子目录名; void findfiles_withthumbnail_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext); // 查找文件路径,不查找子目录的文件; void findfiles_withthumbnail_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext); // 查找文件路径,以及查找子目录的文件路径,同时获取子目录名; void findfiles_withthumbnail_within_subfolder(IN CONST CString& folder, IN CONST CString& findext); }; #endif