您的位置:首页 > 其它

C实现在某个目录下搜索某个文件并返回那个文件的绝对路径

2015-05-27 18:49 330 查看
有的时候,我们会在某个文件夹下搜寻某个文件并要知道那个文件的路径,用C写的话如下所示:

</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返回值可能为多个值不能简单用==判断
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐