findfile.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #ifndef __FIND_FILE2_20151006__
  2. #define __FIND_FILE2_20151006__
  3. #pragma once
  4. class findfile2
  5. {
  6. public:
  7. findfile2(void);
  8. virtual ~findfile2(void);
  9. protected:
  10. INT m_nlimit;
  11. CStringArray m_vtEffctExt;
  12. CStringArray *m_pfiles;
  13. CStringArray *m_pnames;
  14. CStringArray *m_pfolders;
  15. CStringArray *m_pnames_noext;
  16. CStringArray *m_pvtfiles_sth; // s小图;
  17. CStringArray *m_pvtfiles_mth; // m小图;
  18. public:
  19. static BOOL iscorrectext(IN const CString &fext, OUT CString* lpMistakenExt = NULL);
  20. static int match(IN CONST CString &sExt, IN CONST CString &sFile);
  21. static void keepdownext(IN CONST CString &keepExt, IN CStringArray &vtfiles);
  22. static void keepoutext(IN CONST CString &removeext, IN CStringArray &vtfiles);
  23. static void subgroupExt(IN CONST CString &ext1, IN CStringArray &vt1, IN CONST CString &ext2, IN CStringArray &vt2); // 分组扩展名;
  24. static CString getfilename(IN CONST CString &file);
  25. protected:
  26. INT getlimit() const { return m_nlimit; }
  27. void setlimit(IN CONST INT &nlimit);
  28. void groupExt();
  29. void groupExt( IN CONST CString &strExts, IN CStringArray &AryExts );
  30. inline INT checklimit() { return m_pfiles->GetSize() == getlimit(); }
  31. BOOL IsaDirectory(CONST CString &sDirectory) { return (FILE_ATTRIBUTE_DIRECTORY == GetFileAttributes(sDirectory)); }
  32. // 查找所有文件,包括子文件夹名、文件名、文件路径;
  33. void findall(IN CONST CString& folder, IN CONST CString& findext);
  34. // 只返回2级子目录名;
  35. void findsubfolder(IN CONST CString& folder);
  36. // 只返回所有子目录名;
  37. void findallsubfolder(IN CONST CString& folder);
  38. // 查找文件路径,以及查找子目录的文件路径,但不获取子目录名;
  39. void findfiles_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  40. // 查找文件路径,不查找子目录的文件;
  41. void findfiles_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  42. // 查找文件路径,以及查找子目录的文件路径,同时获取子目录名;
  43. void findfiles_within_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  44. // 查找文件名称,以及查找子目录的文件名称,但不获取子目录名(返回的文件包含扩展名);
  45. void findnames_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  46. // 查找文件名称,不查找子目录的文件(返回的文件包含扩展名);
  47. void findnames_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  48. // 查找文件名称,以及查找子目录的文件名称,同时获取子目录名(返回的文件包含扩展名);
  49. void findnames_within_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  50. // 查找文件名称,以及查找子目录的文件名称,但不获取子目录名(返回的文件不含扩展名);
  51. void findnames_findin_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext);
  52. // 查找文件名称,不查找子目录的文件(返回的文件不含扩展名);
  53. void findnames_findout_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext);
  54. // 查找文件名称,以及查找子目录的文件名称,同时获取子目录名(返回的文件不含扩展名);
  55. void findnames_within_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext);
  56. // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,但不获取子目录名;(返回的文件包含扩展名);
  57. void findfilesnames_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  58. // 查找文件路径和文件名,不查找子目录;(返回的文件包含扩展名);
  59. void findfilesnames_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  60. // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,且获取子目录名;(返回的文件包含扩展名);
  61. void findfilesnames_within_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  62. // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,但不获取子目录名(返回的文件不含扩展名);
  63. void findfilesnames_findin_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext);
  64. // 查找文件路径和文件名,不查找子目录(返回的文件不含扩展名);
  65. void findfilesnames_findout_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext);
  66. // 查找文件路径和文件名,以及查找子目录的文件路径和文件名,且获取子目录名(返回的文件不含扩展名);
  67. void findfilesnames_within_subfolder_ex(IN CONST CString& folder, IN CONST CString& findext);
  68. // 查找指定文件名和扩展名的文件;
  69. //void findfiles_bynames_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN CStringArray &names);
  70. //void findfiles_bynames_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN CStringArray &names);
  71. //void findfiles_bynames_within_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN CStringArray &names);
  72. // 查找指定文件名和扩展名的文件;
  73. void findfiles_bynames_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN /*CONST*/ CStringArray &exts, IN CStringArray &names);
  74. void findfiles_bynames_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN /*CONST*/ CStringArray &exts, IN CStringArray &names);
  75. void findfiles_bynames_within_subfolder(IN CONST CString& folder, IN CONST CString& findext, IN /*CONST*/ CStringArray &exts, IN CStringArray &names);
  76. //////////////////////////////////////////////////////////////////////////
  77. // 查找到001.jpg时,同时查找s001.jpg和m001.jpg,如果没有小图需要用""表示;
  78. // findex不能够多个组合,如果要查找多个扩展名的,尽量分开;
  79. // 查找文件路径,以及查找子目录的文件路径,但不获取子目录名;
  80. void findfiles_withthumbnail_findin_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  81. // 查找文件路径,不查找子目录的文件;
  82. void findfiles_withthumbnail_findout_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  83. // 查找文件路径,以及查找子目录的文件路径,同时获取子目录名;
  84. void findfiles_withthumbnail_within_subfolder(IN CONST CString& folder, IN CONST CString& findext);
  85. };
  86. #endif