| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 | 
							- /************************************************************************/
 
- /*  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
 
 
  |