用非递归方式遍历目录及其子目录的文件
2006-06-21 13:56
621 查看
typedef BOOL (*PROCESS_FILE_FUNCTION)(LPCTSTR filename);
上面的PROCESS_FILE_FUNCTION是一种函数指针,这个函数处理文件名为filename的文件,如果该函数返回
FALSE,则ProcessDirectory立刻退出,不再继续查找
void ProcessDirectory(LPCTSTR dirname,PROCESS_FILE_FUNCTION proc)
{
CStringArray dirs;
CString searchname;
CFileFind find;
dirs.Add(dirname);
BOOL bRet;
while(dirs.GetSize()>0)
{
searchname = dirs[0] +"//*.*";
dirs.RemoveAt(0);
bRet = find.FindFile (searchname,0);
if(!bRet)continue;
do{
bRet = find.FindNextFile ();
if(find.IsDots ())
{//忽略.和..文件
continue;
}
if(find.IsDirectory ())
{
dirs.Add (find.GetFilePath());
continue;
}else{
if(!proc(find.GetFilePath ()))
{
return;
}
}
}while(bRet);
}
}
上面的PROCESS_FILE_FUNCTION是一种函数指针,这个函数处理文件名为filename的文件,如果该函数返回
FALSE,则ProcessDirectory立刻退出,不再继续查找
void ProcessDirectory(LPCTSTR dirname,PROCESS_FILE_FUNCTION proc)
{
CStringArray dirs;
CString searchname;
CFileFind find;
dirs.Add(dirname);
BOOL bRet;
while(dirs.GetSize()>0)
{
searchname = dirs[0] +"//*.*";
dirs.RemoveAt(0);
bRet = find.FindFile (searchname,0);
if(!bRet)continue;
do{
bRet = find.FindNextFile ();
if(find.IsDots ())
{//忽略.和..文件
continue;
}
if(find.IsDirectory ())
{
dirs.Add (find.GetFilePath());
continue;
}else{
if(!proc(find.GetFilePath ()))
{
return;
}
}
}while(bRet);
}
}
相关文章推荐
- 用非递归方式遍历目录及其子目录的文件
- 采用非递归方式遍历目录及其子目录的文件
- 非递归方式遍历目录及其子目录的文件
- 采用非递归方式遍历目录及其子目录的文件
- php队列方式和递归方式遍历目录文件及子目录
- 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
- 使用Shell遍历目录及其子目录中的所有文件
- C#递归读取目录里所有文件(包括子目录)及其文件操作
- 遍历指定目录及其子目录下所有文件
- 非递归方式遍历文件夹,取得所有子目录和文件的文件名和大小
- VC/MFC 下 递归遍历目录下的所有子目录及文件
- php递归遍历所有目录及子目录和文件实例
- 递归方式遍历子目录下的子目录
- 利用递归删除目录及其子目录及文件
- [java]递归读取目录及其子目录文件
- Linux 下wc 统计递归统计目录及其子目录下文件的行数
- 遍历某一个指定目录下的所有子目录和文件(递归)
- 遍历目录及其子目录下面的某类型文件
- C#递归读取目录里所有文件(包括子目录)及其文件操作
- 遍历目录及其子目录,并输出后缀为jpg格式图片文件