123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 |
- /************************************************************************/
- /* 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 filehelpImpl :public findfile
- {
- public:
- filehelpImpl(void);
- ~filehelpImpl(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 // 返回同名的文件名;
- );
- };
- #endif
|