/************************************************************************/ /* Copyright (C), 2016-2020, [IT], ��������Ȩ��; /* ģ �� ����; /* �� ����; /* /* �� ����[V]; /* �� �ߣ�[IT]; /* �� �ڣ�[12/22/2016]; /* /* /* ע �⣺; /* /* �ļ�¼��[IT]; /* �����ڣ�; /* �İ汾��; /* �����ݣ�; /************************************************************************/ #ifndef __FILEHELPING_20150818__ #define __FILEHELPING_20150818__ #pragma once #include "findfile.h" #define USE_IMGEXT 0 class filehelper :public findfile { public: filehelper(void); ~filehelper(void); public: // ���������; static void random(IN STR_VEC& vtContent, IN BOOL bSort = TRUE); // �ָ�����; static void split(OUT vector<TString>& vtSplit, IN const TString str, IN const TString strSplit); // ���ݺ��������ļ�; static void keepdownbyext(IN const TString &keepExt, IN STR_VEC &vtfiles); static void keepdownbyext(IN const TString &keepExt, IN const STR_VEC &vtfiles, OUT STR_VEC &vtresult); // ���ݺ����Ƴ��ļ�; static void keepoutbyext(IN const TString &removeext, IN STR_VEC &vtfiles); static void keepoutbyext(IN const TString &removeext, IN const STR_VEC &vtfiles, OUT STR_VEC &vtresult); // ����ָ���ļ���(�к��ģ�001.jpg)���ļ�·��; void keepdowbyname(IN const STR_VEC &vtnames); static void keepdowbyname(IN const STR_VEC &vtnames, IN STR_VEC &vtfiles); static void keepdowbyname(IN const STR_VEC &vtnames, IN const STR_VEC &vtfiles, OUT STR_VEC &vt_result); // ����ָ���ļ���(���ģ�001)���ļ�·��; void keepdowbyname_noext(IN const STR_VEC &vtnames); static void keepdowbyname_noext(IN const STR_VEC &vtnames, IN STR_VEC &vtfiles); static void keepdowbyname_noext(IN const STR_VEC &vtnames, IN const STR_VEC &vtfiles, OUT STR_VEC &vt_result); // ������չ��; static void subgroupExt(IN const TString &ext1, IN STR_VEC &vt1, IN const TString &ext2, IN STR_VEC &vt2); // �����к����ļ���(��:001.jpg)�������ļ�; static void filterbyname(IN STR_VEC &vtfiles, IN const STR_VEC &vtnames); void filterbyname(IN const STR_VEC &vtnames); // ���������ļ���(��:001)�������ļ�; static void filterbyname_noext(IN STR_VEC &vtfiles, IN const STR_VEC &vtnames); void filterbyname_noext(IN const STR_VEC &vtnames); // ��ȡ�ļ���,������(��:001.jpg); inline void getnames(IN STR_VEC &vtfiles, IN STR_VEC &vtnames) { INT nIndex = 0; for ( STR_VEC::iterator it = vtfiles.begin(); it != vtfiles.end(); it++ ) { if ( (nIndex = it->find_last_of(_T('\\'))) != TString::npos ) { vtnames.push_back(it->substr(nIndex+1)); } } } // ��ȡ�ļ���,��������(��:001); inline void getnames_noext(IN const STR_VEC &vtfiles, IN STR_VEC &vtnames) { INT nIndex = 0; INT nIndex2 = 0; for ( STR_VEC::const_iterator it = vtfiles.begin(); it != vtfiles.end(); it++ ) { if ( (nIndex = it->find_last_of(_T('\\'))) != TString::npos ) { if ( (nIndex2 = it->find_last_of(_T('.'))) != TString::npos) { if ( nIndex2 > nIndex) vtnames.push_back(it->substr(nIndex+1, nIndex2-nIndex)); } } else {// vtfiles��û��Ŀ¼���ļ���,�磺001.jpg; if ( (nIndex2 = it->find_last_of(_T('.'))) != TString::npos) { vtnames.push_back(it->substr(0, nIndex2)); } } } } public: // ����ȫ��; BOOL getall( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN OUT STR_VEC *pvtfiles, // ����Ҫ���ҵ��ļ�ȫ��; IN OUT STR_VEC *pvtnames, // ����Ҫ���ҵ��ļ���(��·��,������չ��); IN OUT STR_VEC *pvtfolders // ����Ҫ���ҵ���Ŀ¼; ); // ֻ��ȡ��ǰҪĿ¼�����ļ���,����ȡ���ļ����е��ļ���; BOOL getsubfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN STR_VEC *pvtfolders // �������ļ���; ); BOOL getallsubfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN STR_VEC *pvtfolders // �����������ļ���; ); ////////////////////////////////////////////////////////////////////////// BOOL getfiles_findin_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN STR_VEC *pvtfiles // ����Ҫ���ҵ��ļ�ȫ��; ); BOOL getfiles_findout_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN OUT STR_VEC *pvtfiles // ����Ҫ���ҵ��ļ�ȫ��; ); BOOL getfiles_within_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN STR_VEC *pvtfiles, // ����Ҫ���ҵ��ļ�ȫ��; IN STR_VEC *pvtfolders // �ļ���; ); ////////////////////////////////////////////////////////////////////////// virtual BOOL getfiles_bynames_findin_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN STR_VEC &vtnames, IN STR_VEC *pvtfiles // ����Ҫ���ҵ��ļ�ȫ��; ); virtual BOOL getfiles_bynames_findout_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN STR_VEC &vtnames, IN OUT STR_VEC *pvtfiles // ����Ҫ���ҵ��ļ�ȫ��; ) ; virtual BOOL getfiles_bynames_within_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN STR_VEC &vtnames, IN STR_VEC *pvtfiles, // ����Ҫ���ҵ��ļ�ȫ��; IN STR_VEC *pvtfolders // �ļ���; ) ; ////////////////////////////////////////////////////////////////////////// BOOL getnames_findin_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN STR_VEC *pvtnames // ����Ҫ���ҵ��ļ���(��·��,������չ��); ); BOOL getnames_findout_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN STR_VEC *pvtnames // ����Ҫ���ҵ��ļ���(��·��,������չ��); ); BOOL getnames_within_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN STR_VEC *pvtnames, // ����Ҫ���ҵ��ļ�ȫ��; IN STR_VEC *pvtfolders // �ļ���; ); ////////////////////////////////////////////////////////////////////////// BOOL getfilesnames_findin_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN STR_VEC *pvtfiles, // ����Ҫ���ҵ��ļ�ȫ��; IN STR_VEC *pvtnames // ����Ҫ���ҵ��ļ���(��·��,������չ��); ); BOOL getfilesnames_findout_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN STR_VEC *pvtfiles, // ����Ҫ���ҵ��ļ�ȫ��; IN STR_VEC *pvtnames // ����Ҫ���ҵ��ļ���(��·��,������չ��); ); BOOL getfilesnames_within_subfolder( IN LPCTSTR lpfolder, // Ҫ���ҵ�Ŀ¼; IN LPCTSTR lpfindext, // Ҫ���ҵ���չ��; IN STR_VEC *pvtfiles, // ����Ҫ���ҵ��ļ�ȫ��; IN STR_VEC *pvtnames, // ����Ҫ���ҵ��ļ���(��·��,������չ��); IN STR_VEC *pvtfolders // �ļ���; ); public: ////////////////////////////////////////////////////////////////////////// BOOL comparename_findin_names(IN LPCTSTR name); // �����ļ��Ա�,�Ƿ�ͬ��; BOOL comparename_2file( IN LPCTSTR file1, // �ļ�1(ȫ·��); IN LPCTSTR file2 // �ļ�2(ȫ·��); ); // ָ���ļ���,��һ���ļ����Ա�; BOOL comparename_findin_names( IN LPCTSTR name, // �ļ���(��·��,������չ��); IN STR_VEC& vtnames // һ���ļ���(��·��,������չ��); ); // ָ���ļ���,��һ���ļ��Ա�; BOOL comparename_findin_files( IN LPCTSTR name, // �ļ���(������չ��); IN STR_VEC& vtfiles // һ���ļ�(ȫ·��); ); // ָ���ļ���,��һ�ļ��жԱ�; BOOL comparename_findin_folder( IN LPCTSTR name, // �ļ���(������չ��); IN LPCTSTR folder, // �ļ���; IN LPCTSTR findext, // Ҫ���ҵ���չ��; IN BOOL bsubfolder // �Ƿ�����ļ����ڵ���Ŀ¼; ); ////////////////////////////////////////////////////////////////////////// // ָ��һ���ļ���,����һ���ļ����Ա�; INT comparenames_findin_names( IN STR_VEC vtSrcnames, // ָ����һ��Դ�ļ���(��·��,������չ��); IN STR_VEC vtDesnames, // ָ����һ��Ŀ���ļ���(��·��,������չ��); OUT STR_VEC *pvtIsonym = NULL // ����ͬ�����ļ���; ); // ָ��һ���ļ���,��һ���ļ�(ȫ·��)�Ա�; INT comparenames_findin_files( IN STR_VEC vtnames, // ָ����һ��Դ�ļ���(��·��,������չ��); IN STR_VEC vtfiles, // ָ����һ��Ŀ���ļ�(ȫ·��); IN LPCTSTR findext, // Ҫ���ҵ���չ��; OUT STR_VEC *pvtIsonym = NULL // ����ͬ�����ļ���; ); // ָ����һ���ļ���,��һ�ļ��жԱ�; INT comparenames_findin_folder( IN STR_VEC vtnames, // ָ����һ��Դ�ļ���(��·��,������չ��); IN LPCTSTR folder, // �ļ���; IN BOOL bsubfolder, // �Ƿ�����ļ����ڵ���Ŀ¼; IN LPCTSTR findext, // Ҫ���ҵ���չ��; OUT STR_VEC *pvtIsonym = NULL // ����ͬ�����ļ���; ); ////////////////////////////////////////////////////////////////////////// // ָ��һ�ļ�,��һ���ļ����Ա�; BOOL comparefile_findin_names( IN LPCTSTR file, // �ļ�1(ȫ·��); IN STR_VEC& vtnames // ָ����һ���ļ���(��·��,������չ��) ); // ָ��һ�ļ�,��һ���ļ��Ա�; BOOL comparefile_findin_files( IN LPCTSTR file, // �ļ�(ȫ·��); IN STR_VEC& vtfiles, // ָ����һ���ļ�(ȫ·��) IN LPCTSTR findext // Ҫ���ҵ���չ��; ); // ָ��һ�ļ�,��һ�ļ��жԱ�; BOOL comparefile_findin_folder( IN LPCTSTR file, // �ļ�(ȫ·��); IN LPCTSTR folder, // �ļ���; IN BOOL bsubfolder, // �Ƿ�������ļ���; IN LPCTSTR findext // Ҫ���ҵ���չ��; ); ////////////////////////////////////////////////////////////////////////// // ָ��һ���ļ�,����һ���ļ��Ա�; INT comparefiles_findin_files( IN STR_VEC &vtfiles1, // ָ����һ��Դ�ļ�; IN STR_VEC &vtfiles2, // ָ����һ��Ŀ���ļ�; IN LPCTSTR findext, // Ҫ���ҵ���չ��; OUT STR_VEC *pvtIsonym = NULL // ����ͬ�����ļ���; ); // ָ��һ���ļ�,��һ�ļ��жԱ�; INT comparefiles_findin_folder( IN STR_VEC &vtfiles, // ָ����һ��Դ�ļ�; IN LPCTSTR folder, // ָ�����ļ���; IN BOOL bsubfolder, // �Ƿ�������ļ���; IN LPCTSTR findext, // Ҫ���ҵ���չ��; OUT STR_VEC *pvtIsonym = NULL // ����ͬ�����ļ���; ); // �ļ������ҶԱ�(�������ļ��жԱ�) INT comparefolderself( IN LPCTSTR folder, // ָ���ļ���; IN LPCTSTR findext, // Ҫ���ҵ���չ��; OUT STR_VEC *pvtIsonym = NULL // ����ͬ�����ļ���; ); // ָ��һ�ļ���,����һ�ļ��жԱ�; INT comparefolder_findin_folder( IN LPCTSTR folder1, // ָ��Դ�ļ���; IN LPCTSTR folder2, // ָ��Ŀ���ļ���; IN BOOL bsubfolder, // �Ƿ�������ļ���; IN LPCTSTR findext, // Ҫ���ҵ���չ��; OUT STR_VEC *pvtIsonym = NULL // ����ͬ�����ļ���; ); public: INT copyfolder(IN LPCTSTR from, IN LPCTSTR to); }; #endif