123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #ifndef __FIND_FILE_20150819__
- #define __FIND_FILE_20150819__
- #include "basetype.h"
- #pragma once
- namespace filekernel
- {
- // 查找文件的最大数量限制在nMaxLimit;
- CONST UINT64 nMaxLimit = 0x100000; //--1048576
- // 查找文件的默认数量限制在nDefLimit;
- CONST UINT64 nDefLimit = 0x10000; //--65536
- // 路径分隔符;
- CONST TCHAR c_pathSeparator = _T('\\');
- CONST TString s_pathSeparator = _T("\\");
- CONST TString g_sVertical = _T("|");
- // 正确的扩展名及格式样列;
- // 这个值最好可以从配置文件ini或xml中获取,不用在代码里写死;
- CONST TString g_sCorrectExt = _T("*.jpg|*.jpeg|*.png|*.bmp|*.cr2|*.nef|*.raw");
- class AFX_CLASS_EXPORT findfile
- {
- public:
- findfile(void);
- virtual ~findfile(void);
- protected:
- INT m_nlimit;
- STR_VEC *m_pvtfiles;
- STR_VEC *m_pvtnames;
- STR_VEC *m_pvtfolders;
- STR_VEC *m_pvtnames_noext;
- public:
- static BOOL iscorrectext(IN const TString &fext, OUT TString* lpMistakenExt = NULL);
- static TString lowercase(IN const TString &Str);
- static void lowercase(IN TString& str);
- static TString uppercase(IN const TString &Str);
- static void uppercase(IN TString& str);
- static int match(IN CONST TString &sExt, IN CONST TString &sFile);
- static void keepdownext(IN CONST TString &keepExt, IN STR_VEC &vtfiles);
- static void keepoutext(IN CONST TString &removeext, IN STR_VEC &vtfiles);
- static void subgroupExt(IN CONST TString &ext1, IN STR_VEC &vt1, IN CONST TString &ext2, IN STR_VEC &vt2); // 分组扩展名;
- static TString getfilename(IN CONST TString &file);
- protected:
- INT getlimit() const { return m_nlimit; }
- void setlimit(IN CONST INT &nlimit);
- inline INT checklimit() { return m_pvtfiles->size() == getlimit(); }
- BOOL IsaDirectory(CONST TString &sDirectory) { return (FILE_ATTRIBUTE_DIRECTORY == GetFileAttributes(sDirectory.c_str())); }
- // 查找所有文件,包括子文件夹名、文件名、文件路径;
- void findall(IN CONST TString& folder, IN CONST TString& findext);
- // 只返回2级子目录名;
- void findsubfolder(IN CONST TString& folder);
- // 只返回所有子目录名;
- void findallsubfolder(IN CONST TString& folder);
- // 查找文件路径,以及查找子目录的文件路径,但不获取子目录名;
- void findfiles_findin_subfolder(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件路径,不查找子目录的文件;
- void findfiles_findout_subfolder(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件路径,以及查找子目录的文件路径,同时获取子目录名;
- void findfiles_within_subfolder(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件名称,以及查找子目录的文件名称,但不获取子目录名(包含扩展名);
- void findnames_findin_subfolder(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件名称,不查找子目录的文件(包含扩展名);
- void findnames_findout_subfolder(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件名称,以及查找子目录的文件名称,同时获取子目录名(包含扩展名);
- void findnames_within_subfolder(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件名称,以及查找子目录的文件名称,但不获取子目录名(不含扩展名);
- void findnames_findin_subfolder_ex(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件名称,不查找子目录的文件(不含扩展名);
- void findnames_findout_subfolder_ex(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件名称,以及查找子目录的文件名称,同时获取子目录名(不含扩展名);
- void findnames_within_subfolder_ex(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,但不获取子目录名;(包含扩展名);
- void findfilesnames_findin_subfolder(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件路径和文件名,不查找子目录;(包含扩展名);
- void findfilesnames_findout_subfolder(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,且获取子目录名;(包含扩展名);
- void findfilesnames_within_subfolder(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,但不获取子目录名(不含扩展名);
- void findfilesnames_findin_subfolder_ex(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件路径和文件名,不查找子目录(不含扩展名);
- void findfilesnames_findout_subfolder_ex(IN CONST TString& folder, IN CONST TString& findext);
- // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,且获取子目录名(不含扩展名);
- void findfilesnames_within_subfolder_ex(IN CONST TString& folder, IN CONST TString& findext);
- };
- };
- #endif
|