搜索或处理指定目录下的所有文件

2016-02-19 16:40 5 1 收藏

下面图老师小编跟大家分享一个简单易学的搜索或处理指定目录下的所有文件教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!

【 tulaoshi.com - 编程语言 】

一个CFileFind的扩展类CFileFindExt----搜索或处理指定目录下的所有文件

   一、类CfileFindExt功能说明大家经常需要对指定目录下的所有文件进行搜索或其它相同操作。若文件数很多,逐一对每个文件手工操作,很费时。作者用基于层次遍历的非递归算法(以减少运行时的时间和空间开销)实现了一个CFileFind的扩展类CFileFindExt,该类可以对指定目录下的所有文件进行搜索或相同的批处理操作,同时也可根据搜索后得到的文件名对每个文件分别进行处理。 二、类 CFileFindExt 的接口说明及用法示例:1、头文件、处理函数、以及类的声明:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)
#include "stdafx.h.h" #include "FileFindExt.h" //①一个参数型处理函数: BOOL ProcessFile1(CString SrcFile) //文件名可自定义 {   //自定义函数体 } //②两个参数型处理函数: BOOL ProcessFile2(CString SrcFile, CString DstFile) //文件名可自定义 {   //自定义函数体 } //③类的声明 CFileFindExt ProcessDir;
2、调用说明及示例:① 对所有文件进行一个参数型函数批处理
调用示例:BOOL ret=ProcessDir. DoProcess(DirName, ProcessFile1, FileExtName); 功能说明:对指定目录下、指定文件扩展名的所有文件,调用一个参数型处理函数进行批处理, 参数说明:DirName:指定目录名     ProcessFile1:一个参数型处理函数批针PROFUN1     FileExtName:指定扩展名,缺省为所有类型文件 输出说明:1、对所有文件处理都成功,则返回true;      2、某一文件处理出错(函数ProcessFile1 ()返回false),或分配内存不足时,则终止搜索,返回false 
② 对所有文件进行两个参数型函数批处理
调用示例:BOOL ret=ProcessDir.DoProcess(DirName, ProcessFile2, , DstDir, SrcFileExt, DstFileExt); 功能说明:对指定目录下、指定文件扩展名的所有文件,调用两个参数型处理函数ProcessFile2进行批处理, 参数说明:DirName: 指定目录名      ProcessFile2:两个参数型处理函数批针PROFUN2      DstDir:目标文件存放根目录名      SrcFileExt:源文件扩展名,缺省为所有类型文件      DstFileExt:目标文件扩展名,缺省为所有类型文件 输出说明:1、对所有文件处理都成功,则返回true;      2、某一文件处理出错(函数process()返回false),或分配内存不足时,则终止搜索,返回false  
③ 搜索所有文件名
调用示例:BOOL ret=ProcessDir.SearchFiles(DirName, FileExtName); 功能说明:搜索指定目录下、指定扩展名的所有文件 参数说明:DirName: 指定目录名      FileExtName:指定扩展名,缺省为所有类型文件 输出说明:1、所有文件的相对路径文件名(相对于起始搜索路径)保存在成员变量数组m_FileNames中;      2、成功返回true,分配内存不足时返回false 
④ 获取文件总数
调用示例:int iFiles=ProcessDir.GetSize(); 功能说明: 获取文件总数 参数说明: 无 输出说明: 返回文件名成员变量数组m_FileNames的大小 
⑤ 获取文件名
调用示例:CString FileName=ProcessDir.GetAt(nFileIndex); 功能说明: 获取文件名 参数说明: nFileIndex:要获取的文件名在成员变量数组中的位置 输出说明: 返回成员变量数组m_FileNames中的第nFileIndex个文件名 
说明:以上五个成员函数中,第一二个函数①②是对指定目录下的所有文件进行相同的批处理操作。结合后三个函数③④⑤,便可对每个文件分别进行处理,具体用法如下:
CFileFindExt ProcessDir; BOOL ret=ProcessDir.SearchFiles(Dir, "*.*"); if (!ret) { //错误处理 }   int iFiles=ProcessDir.GetSize(); for (int j=0;jiFiles;j++) { CString FileName=ProcessDir.GetAt(j); //以下对每个文件分别进行处理 } 
三、示例工程说明为简要地说明CFileFindExt类的用法,作者做了一个简单的示例工程,分别对该工程下TestDir目录的所有子目录中的文本文件进行: 1、统计该目录下所有文件字节数,以说明成员函数DoProcess如何对用一个参数型函数指针进行批处理操作; 2、拷贝该目录下的所有文件到同层次下的DstDir目录下,以说明成员函数DoProcess如何对用两个参数型函数指针进行批处理操作; 3、拼接该定目录下的所有文件,以说明如何结合后函数③④⑤,对每个文件分别进行处理。 为简便起见,本示例工程均假设所有文件长度不是太大。 四、欢迎大家使用。今后大家根据需要还可增加返回所有子目录名函数,以及增加其它多参数(大于2)处理函数功能。如有问题,欢迎与作者联系:ts@ict.ac.cn

本文示例代码或素材下载

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1612723.html

延伸阅读
标签: Web开发
% function JudgeFileExit(strFileName) Dim objFSO,objFile,objFJ Dim strFilePath Dim blFJ Dim intFlag intFlag=0 set objFSO=CreateObject("Scripting.FileSystemObject") strFilePath=server.MapPath("./") if right(strFilePath,1)"/" or right(strFilePath,1)"\" then strFilePath=strFilePath&"\" end if blFJ=objFSO.FileExists(st...
标签: 电脑入门
在我们的电脑中,经常会有一大堆图片堆积在一个文件夹内,当我们要使用到其中的一部分时,便会发现很难找到,那么,怎样才能帮助我们快速的在一堆图片之中找到我们所要找的图片呢?今天图老师小编就来和大家一起分享这个问题的解决方法吧。 虽然我们可以使用全选+双击的方法打开一堆图片文件,但是这个仍然有点儿不方便。这就需要利用到Aut...
标签: 电脑入门
在QQ的安装目录下以你的QQ号码为名字的文件夹里有几个关键文件,保存着你的QQ的一些信息,如果用好了它们,可以玩出一些有趣的花样。 MsgEx.db文件:是你正常登陆过QQ后生成的,如果删除该文件QQ就会无法正常登陆!不过,如果用其他QQ号码文件夹下的同名文件覆盖它,则可以正常登陆。这个是消息记录,要备份消息记录就是这个。 ew...
标签: 电脑入门
在QQ的安装目录下以你的QQ号码为名字的文件夹里有几个关键文件,保存着你的QQ的一些信息,如果用好了它们,可以玩出一些有趣的花样。 1,MsgEx.db文件: 是你正常登陆过QQ后生成的,如果删除该文件QQ就会无法正常登陆!不过,如果用其他QQ号码文件夹下的同名文 在QQ的安装目录下以你的QQ号码为名字的文件夹里有几个关键文件,保存着你的QQ的一...
标签: 电脑入门
   打开QQ安装目录,你会发现里边的文件非常多,如果搞清楚它们每个的作用,那么你就可以完成不少在QQ常规操作情况下实现不了的目的,而且更加快捷,图老师小编收集了QQ目录下各个文件的作用说明,想成为QQ高手这个一定要认真看的哦。 QQ的安装根目录下的文件: ACodec.dll (音频聊天) +BQQApplication.dll (企业好友面...

经验教程

629

收藏

7
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部