文件查找

Struct Lnode{

Char table[256];         //保存文件夹名

Struct Lnode*next;

}

加文件夹入链表

Lnode *newList;

Void AddList(char *list)          //list为文件夹名

{

NewList=new Lnode;

Strcpy(NewList->table,list);

newList->next=NULL;

if(h->next==NULL)

h->next=newList;       //h为头结点

else

{

r->next=newList;        //r始终指向尾节点

r=newList;

}

}

FindFirstFile和FindNextFile

HANDLE   FindFirstFile{

LPCTSTR  IpFileName; //指向要查找的文件名(包含路径)

LPWIN32_FIND_DATA IpFindFileData;   //输出参数,指向一个结构。此结构可以描述找到的文件或文件夹的属性。

}

函数调用成功则返回可供函数FindNextFile和函数FindClose使用的查找句柄,否则返回INVALID_HANDLE_VALUE;

Typedef struct _WIN32_FIND_DATA{

DWORD dwFileAttributes;     //文件属性

FILETIME ftCreationTime;     //创建文件的时间

FILETIME ftLastAccessTime;    //最近一次访问文件的时间

FILETIME ftLastWriteTime;    //最近一次修改文件的时间

DWORD nFileSizeHigh        //文件大小的高位字

DWORD nFileSizeLow;        //文件大小的地位字

DWORD dwReserved0;       //保留,未使用

DWORD dwReserved1;       //保留,未使用

TCHAR cFileName[MAX_PATH];    //文件的名称

TCHAR cAlternateFileName[14];    //文件的替换名称,用文件名.后缀名表示

} WIN32_FIND_DATA,*p WIN32_FIND_DATA;

BOOL  FindNextFile   {

HANDLE  hFindFile;      //此参数指向了函数FindFirstFile返回的查找句柄

LPWIN32_FIND_DATA IpFindFileData;

}

函数调用成功则返回可供函数FindNextFile和函数FindClose使用的查找句柄,否则返回INVALID_HANDLE_VALUE;

查找文件一般使用的结构

hFindFile=FindFirstFile(IpFileName,&IpFindData);

if(hFindFile!=INVALID_HANDLE_VALUE)

{

Do

{

}while(FindNextFile(hFindFile,&findData))

}

遍历目录

Void FindFile(char *pRoad,char *pFile)

//pRoad为要查找的路径,pFile为要查找的文件

{

Char FileRoad[256]={0};//要查找文件的路径

Char DirRoad[256]={0};//存放要查找的路径

Char FindedFile[256]={0};

Char FindedDir[256]={0};//存放找到的是文件夹的路径

Strcpy(FileRoad,pRoad);

Strcpy(DirRoad,pRoad);

Strcat(DirRoad,”\\*.*”);

//查找文件,把找到的放入文件夹链表

WIN32_FIND_DATA findData;

HANDLE hFindFile;

hFindFile=FindFirstFile(DirRoad,&findData);

if(hFindFile!=INVALID_HANDLE_VALUE)

{

Do

{

If(findData.cFileName[0]==’.’)

Continue;

If(findData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)

{

Strcpy(FindedDir,pRoad);

Strcat(FindedDir,”\\”);

Strcat(FindDir,findData.cFileName);

AddList(FindDir);

Memset(FindDir,0x00,256);

}

}while(FindNextFile(hFindFile,&findData));

}

Strcat(FileRoad,”\\”);

Strcat(FileRoad,pFile);

//查找要查找的文件

hFindFile=FindFirstFile(FileRoad,&findData);

if(hFindFile!=INVALID_HANDLE_VALUE)

{

Do{

Strcpy(FindedFile,pRoad);

Strcat(FindedFile,”\\”);

Strcat(FindedFile,findData.cFileName);

Printf(“%s\n”,FindedFile);

Memset(FindedFile,0x00,256);

}while(FindNextFile(hFindFile,&findData));

}

}

Int searchFile(char * Directory,char *SeachFile)

{

Lnode newList;

Strcpy(newList->table,Directory);

newList->next=NULL;

while(true)

{

Lnode *Find;

If(r->next!=NULL)

{

Find=r->next;

r->next=r->next->next;

FindFile(Find->table,searchFile);

}

Else

{

Printf(“文件搜索完毕\n”);

Return 0;

}

}

Return 0;

}

函数FindFirstFile的更多相关文章

  1. [php代码审计] Window api函数 FindFirstFile 在php中的问题

    include文件夹中文件: 内容: <?php echo __FILE__; ?> index.php: 演示如下: “<<”替换多个任意字符: “>”替换单个字符:

  2. c#调用api(FindFirstFile,FindNextFile)高效遍历目录文件【转载】

    在c#下遍历目录,应用最多的应该就是 System.IO.DirectoryInfo.GetDirectories或GetFiles了,但是当目录特别大,文件特别多时,效率不尽人意,此时我们很容易想到 ...

  3. windows中操作文件和目录的函数

    1.文件操作函数       CreateFile();//创建或打开文件      ReadFile();//从文件读      WriteFile();//向文件写      SetFilePoi ...

  4. Windows FindFirstFile利用

    目前大多数程序都会对上传的文件名加入时间戳等字符再进行MD5,然后下载文件的时候通过保存在数据库里的文件ID读取文件路径,一样也实现了文件下载,这样我们就无法直接得到我们上传的webshell文件路径 ...

  5. C/C++ 中判断某一文件或目录是否存在

    方法一:C++中比较简单的一种办法(使用文件流打开文件) #include <iostream> #include <fstream> using namespace std; ...

  6. php黑魔法之解析问题

    code如下: <?php $a=$_GET[a]; $b=is_file($a); var_dump($b); ?> 可以看到1.ph< 返回了true 这样不就可以绕过这个的过滤 ...

  7. Deformity PHP Webshell、Webshell Hidden Learning

    目录 . 引言 . webshell原理介绍 . webshell的常见类型以及变种方法 . webshell的检测原理以及检测工具 . webshell隐藏反检测对抗手段 0. 引言 本文旨在研究W ...

  8. 在windows 、linux下读取目录下所有文件名

    Windows要引入的头文件是<Windows.h> 主要是两个函数FindFirstFile.FindNextFile MSDN里是这么说的: FindFirstFile functio ...

  9. SIFT算法的应用--目标识别之Bag-of-words模型

    原文:http://blog.csdn.net/v_JULY_v/article/details/6555899 SIFT算法的应用 -目标识别之用Bag-of-words模型表示一幅图像 作者:wa ...

随机推荐

  1. 2016 ACM/ICPC Asia Regional Dalian ICPC大连现场赛

    讲道理我挺想去大连的…… 毕竟风景不错…… 而且这次能去北京也是靠大连网络赛这一场拉开的优势…… 一道补图最短路一道数学推论简直爽爆…… 当然 除了这一场 其他场都非常划水…… 上次看到别人的博客用这 ...

  2. ECOS CMD更新

    update update --force-update-db

  3. Ubuntu11.10 E: Unable to locate package ubuntu-restricted-extras

    最近在ubuntu11.10下安装支持多媒体播放的插件时遇到一些问题,在此小记一下. 首先是ubuntu11.10的安装,基本上是一键安装,在此不细说. 1.此版本和以前使用的ubuntu版本风格不太 ...

  4. apicloud教程3 (转载)

    本帖最后由 中山赢友网络科技有限公司 于 2015-10-26 16:44 编辑 继<APICloud之小白图解教程系列(一):认识APICloud><APICloud之小白图解教程 ...

  5. 浅谈hbase表中数据导出导入(也就是备份)

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=23916356&id=3321832 最近因为生产环境hbase ...

  6. POJ 2418 Hardwood Species (哈希,%f 和 %lf)

    我的错因: 本来改用%f输出,我用了%lf,结果编译器直接判定为错误(一部分编译器认为lf是没有错的).当时我还以为是hash出错了.. 方法不止一种: 方法 时间   空间 Hash 891ms 5 ...

  7. 腾讯微博OAuthV2认证实现第三方登录

    1)添加相关jar包: httpmime.jar 以下信息是必须的 //!!!请根据您的实际情况修改!!! 认证成功后浏览器会被重定向到这个url中 必须与注册时填写的一致 private Strin ...

  8. ios UIApplocation 中APP启动方式

    iOS app启动的方式有哪些: 自己启动(用户手动点击启动) urlscheme启动(关于urlScheme的详解)http://www.cnblogs.com/sunfuyou/p/6183064 ...

  9. LeetCode OJ 223.Rectangle Area

    Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defined b ...

  10. 谈CSS模块化【封装-继承-多态】

    第一次听到“CSS模块化”这个词是在WebReBuild的第四届“重构人生”年会上,当时我还想,“哈,CSS也有模块化,我没听错吧?”事实上,我没听错,你也没看错,早就有CSS模块化这个概念了.之所以 ...