C实现在某个目录下搜索某个文件并返回那个文件的绝对路径
2015-05-27 18:49
330 查看
有的时候,我们会在某个文件夹下搜寻某个文件并要知道那个文件的路径,用C写的话如下所示:
值得注意的是在FilePath函数中检查目录要用if (p.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)而不是if (p.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY),这是因为,p.dwFileAttributes返回值可能为多个值不能简单用==判断
</pre><pre name="code" class="html">#include<windows.h> #include<stdio.h> void findFile(char*path, char fileDest[], char fPath[]) { WIN32_FIND_DATA p; char pathTemp[260]; sprintf(pathTemp, "%s%s", path, fileDest); HANDLE hand = FindFirstFile(pathTemp, &p);//查找你想要的文件 if (hand != INVALID_HANDLE_VALUE)//不出错则输出 { strcpy(fPath, pathTemp); puts(fPath); } } void FilePath(char *path, char fileDest[], char fPath[]) { WIN32_FIND_DATA p; char pathTemp[260]; sprintf(pathTemp, "%s*", path); HANDLE h = FindFirstFile(pathTemp, &p);//搜索所有文件 char nextPath[260]; if (p.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//如果是目录 if (p.cFileName[0] != '.')//排除.和.. { sprintf(nextPath, "%s%s\\", path, p.cFileName); findFile(nextPath, fileDest, fPath);//查找子目录的目标文件 FilePath(nextPath, fileDest, fPath);//进入子目录 } while (FindNextFile(h, &p))//在本目录查找下一文件 if (p.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) if (p.cFileName[0] != '.') { sprintf(nextPath, "%s%s\\", path, p.cFileName); findFile(nextPath, fileDest, fPath); FilePath(nextPath, fileDest, fPath); } } int main() { char str[260] = "E:\\URP\\多关键字搜索\\"; char fDest[260] = "a0311859.txt"; char fPath[500]; memset(fPath, '\0', 500); FilePath(str, fDest, fPath); if (fPath[0] == '\0') printf("没有找到此文件\n"); system("pause"); return 0; }
值得注意的是在FilePath函数中检查目录要用if (p.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)而不是if (p.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY),这是因为,p.dwFileAttributes返回值可能为多个值不能简单用==判断
相关文章推荐
- Python搜索目录下指定的文件,并返回绝对路径(包括子目录)
- android assets目录搜索文件,返回该文件相对路径的方法
- yii2 根据文件生成hash格式图片目录并返回绝对路径
- 递归实现指定目录下的Java文件的绝对路径
- 使用MFC搜索当前目录下所存在的某种文件,将文件名(路径等)添加到下拉框中,返回文件个数,部分关键代码。。
- php下实现在指定目录搜索指定类型文件的函数
- 读取给定目录下文件的绝对路径
- 分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里
- asp.net下返回文件路径,获得虚拟目录的网站的根目录
- 用递归算法实现ASP程序用fso对硬盘上某个路径下目录和文件的遍历
- .Net/C# 封装磁盘目录文件搜索功能的工具类 (实现了与搜索相关的事件,以便插入客户处理代码)
- .Net/C# 封装磁盘目录文件搜索功能的工具类 (实现了与搜索相关的事件,以便插入客户处理代码)
- .Net/C# 封装磁盘目录文件搜索功能的工具类 (实现了与搜索相关的事件,以便插入客户处理代码)
- .Net/C#控制台应用程序实现磁盘目录文件搜索的工具类 【本示例简体转繁体】
- 查找配置文件,并返回文件的绝对路径
- 利用Dataview实现搜索指定目录下的所有文件,以指定的条件排序(可以按文件名升降序,最后修改时间升降序)
- .Net/C# 封装磁盘目录文件搜索功能的工具类 (实现了与搜索相关的事件,以便插入客户处理代码)
- 用递归算法实现ASP程序用fso对硬盘上某个路径下目录和文件的遍历
- 用递归算法实现ASP程序用fso对硬盘上某个路径下目录和文件的遍历
- tcl/tk实例详解——返回一个文件夹下所有文件的绝对路径