递归遍历文件夹查找文件
2012-02-20 13:28
239 查看
void IsFindFile(CString strPatn, CString strwjm) { CFileFind fileFind; CString NextDir; CString Directory(strPatn); Directory += "\\*.*"; BOOL bResult = fileFind.FindFile(Directory); while(bResult) { bResult = fileFind.FindNextFile(); if(fileFind.IsDots()) //判断是不是“.”(文件夹本身)或者“..”(父文件夹) continue; if(fileFind.IsDirectory()) { NextDir = fileFind.GetFilePath(); //获得当前文件的路径 IsFindFile(NextDir,strwjm); } else { CString filename=fileFind.GetFileTitle(); //获得当前文件名不包括后缀名 if(filename==strwjm) { GLpathnamne=fileFind.GetFilePath(); //返回整个文件的全路径the file path c:\myhtml\myfile.txt. } } } fileFind.Close(); }参数1:所要遍历的文件夹;参数2:所要查找的文件名;
若是找到所要查找的文件,将这文件的全路径添加到全局变量GLpathname中记录;
此函数效率上存在一个问题:若是文件嵌套,不同的文件中可能装有相同的文件,查找每一个文件都是从头遍历到尾,其实可以改改这个函数,当只要查找到这个文件函数就推出遍历查询,我们的目的就是查找这个文件是不是在我们要找的这个文件中,没必要即使查找到了也要把整个文件夹遍历完,明显效率降低了。
MSDN中的例子:
void Recurse(LPCTSTR pstr) { CFileFind finder; // build a string with wildcards CString strWildcard(pstr); strWildcard += _T("\\*.*"); // start working for files BOOL bWorking = finder.FindFile(strWildcard); while (bWorking) { bWorking = finder.FindNextFile(); // skip . and .. files; otherwise, we'd // recur infinitely! if (finder.IsDots()) continue; // if it's a directory, recursively search it if (finder.IsDirectory()) { CString str = finder.GetFilePath(); TRACE(_T("%s\n"), (LPCTSTR)str); Recurse(str); } } finder.Close(); } void PrintDirs() { Recurse(_T("F:")); }
相关文章推荐
- 递归遍历文件夹查找指定文件
- C# 递归遍历文件夹 查找文件并处理
- 递归遍历一个文件夹,对文件进行操作,使用lstat时的悲剧
- C# 递归查找文件夹下所有文件和子文件夹的所有文件
- EXCEL-VBA:递归遍历文件夹及子文件夹中的文件
- 【转载】windows 递归遍历一个文件夹下面的所有文件
- 递归方式遍历文件夹下所有子文件夹和文件
- 递归遍历文件夹里面的文件
- 递归遍历文件夹下所有文件
- 黑马程序员-IO-递归遍历文件夹中的全部文件,拷贝到另一个文件中,对每一个文件修改其后缀名
- java:利用递归遍历整个文件夹并写入文件
- 文件夹递归遍历搜索特定文件
- python程序2(递归查找某一个文件夹下所有的文件是否含有某个特定的字符串,并打印该文件名)
- 递归遍历文件夹里面的文件
- 递归遍历文件夹里面的文件
- 递归遍历磁盘下的某一文件夹中所有文件,并copy文件生成文件和带文件夹的文件
- 使用CFileFind遍历递归删除文件和文件夹
- 遍历整个文件夹,查找特定扩展名的文件,更改文件的前4个字节,并且改名字
- 递归方式遍历文件夹下的所有文件及子文件夹 [php]
- 递归算法遍历文件夹中所有文件&&递归删除文件夹