📄 filefindext.h
字号:
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// FileFindExt.h: interface for the CFileFindExt class.
/********************************************************************/
/* *--*--*--*--*--*--*--*--*--*--*--*--*--*--*--* */
/* | 中国科学院计算技术研究所 | */
/* *--*--*--*--*--*--*--*--*--*--*--*--*--*--*--* */
/* 编程环境: Visual C++ 6.0 (Windows 2000) */
/* 作 者: 唐 胜 */
/* 邮 箱: ts@ict.ac.cn */
/* 发布版本: V1.2.1 */
/* 发布日期: Nov. 01, 2003 */
/* 功能说明:搜索同一目录下的所有同类型文件,并进行处理 */
/* 版本修改: */
/* V1.0:Sep. 26, 2002, 递归实现 */
/* V1.1:Oct. 20, 2003, 为加快搜索速度,减少开销 */
/* 采用先深遍历非递归化实现 */
/* V1.2:Oct. 21, 2003, 考虑目录的层次结构,采用 */
/* 广度遍历非递归化实现,并直接做成类 */
/* v1.2.1: Nov. 01, 2003 对V1.2进行了优化 */
/* 说 明:今后根据需要可增加其它多参数处理函数,或修改处 */
/* 理函数, 使用时请保留以上相关信息 */
/********************************************************************/
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_FILEFINDEXT_H)
#define AFX_FILEFINDEXT_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//处理函数指针变量类型定义
//typedef BOOL (* PROFUN )(CString SrcFile, CString DstFile="");
//一个参数型文件处理(不生成其它目标文件)函数指针定义
typedef BOOL (* PROFUN1 )(CString SrcFile);
//两个参数型文件处理(生成目标文件)函数指针定义
typedef BOOL (* PROFUN2 )(CString SrcFile, CString DstFile);
class CFileFindExt : public CFileFind //继承CFileFind类
{
protected:
//成员变量:调用SearchFiles函数后,保存所有文件的
//相对路径文件名(相对于起始搜索路径)
CStringArray m_FileNames;
public:
//构造函数和析构函数
CFileFindExt();
virtual ~CFileFindExt();
//以下三个函数是成员变量操作函数
/************************************************************************
功能说明: 设置文件名数组成员变量的大小和内存分配增量
参数说明: nNewSizen:当数组的大小;GrowBy:内存分配增量
输出说明: 无
函数调用: 类CStringArray的SetSize()
*************************************************************************/
void SetSize(int nNewSize, int nGrowBy = -1);
/************************************************************************
功能说明: 获取文件名数组成员变量的大小
参数说明: 无
输出说明: 返回文件名数组成员变量的大小
函数调用: 类CStringArray的GetSize()
*************************************************************************/
int GetSize() const;
/************************************************************************
功能说明: 获取数组成员变量中的文件名
参数说明: nFileIndex: 要获取的文件名在数组中的位置
输出说明: 返回文件名
函数调用: 类CStringArray的GetAt()
*************************************************************************/
CString GetAt(int nFileIndex) const;
//以下三个函数是对所有文件进行处理的成员函数
/************************************************************************
修改日期:2003-10-21
修改说明:为加快搜索速度,减少开销,用广度遍历实现非递归化
功能说明: 寻找指定目录下、指定扩展名的所有文件
调用格式: SearchFiles(DirName, FileExtName)
参数说明: DirName: 指定目录名
FileExtName:指定扩展名,缺省为所有类型文件
输出说明: 1、所有文件的相对路径文件名(相对于起始搜索路径)
保存在成员变量m_FileNames中;
2、成功返回true,分配内存不足时返回false
函数调用: FindFile(),FindNextFile(),GetFilePath()
*************************************************************************/
BOOL SearchFiles(CString DirName, CString FileExtName="*.*");
/************************************************************************
修改日期:2003-10-21
修改说明:为加快搜索速度,减少开销,用广度遍历实现非递归化
功能说明: 处理指定目录下、指定扩展名的所有文件
调用格式: DoProcess(DirName, process, FileExtName)
参数说明: DirName: 指定目录名
process: 一个参数型处理函数批针PROFUN1
FileExtName:指定扩展名,缺省为所有类型文件
输出说明: 1、对所有文件处理都成功,则返回true;
2、某一文件处理出错时(返回false),或分配内存不足时,
则终止搜索,返回false
函数调用: process(),FindFile(),FindNextFile(),GetFilePath()
*************************************************************************/
BOOL DoProcess(CString DirName, PROFUN1 process, CString FileExtName="*.*");
/************************************************************************
修改日期:2003-10-21
修改说明:为加快搜索速度,减少开销,用广度遍历实现非递归化
功能说明: 处理指定目录下、指定扩展名的所有文件
调用格式: DoProcess(DirName, process, DstDir, SrcFileExt, DstFileExt)
参数说明: DirName: 指定目录名
process: 两个参数型处理函数批针PROFUN2
DstDir: 目标文件存放根目录名
SrcFileExt: 源文件扩展名,缺省为所有类型文件
DstFileExt: 目标文件扩展名,缺省为所有类型文件
输出说明: 1、对所有文件处理都成功,则返回true;
2、某一文件处理出错(函数process()返回false),或分配内存不足时,
则终止搜索,返回false
函数调用: process(),FindFile(),FindNextFile(),GetFilePath()
*************************************************************************/
BOOL DoProcess(CString DirName, PROFUN2 process, CString DstDir,
CString SrcFileExt="*.*", CString DstFileExt="*.*");
void Free(){m_FileNames.RemoveAll();}
};
#endif // !defined(AFX_FILEFINDEXT_H_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -