函数FindFirstFile
文件查找
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的更多相关文章
- [php代码审计] Window api函数 FindFirstFile 在php中的问题
include文件夹中文件: 内容: <?php echo __FILE__; ?> index.php: 演示如下: “<<”替换多个任意字符: “>”替换单个字符:
- c#调用api(FindFirstFile,FindNextFile)高效遍历目录文件【转载】
在c#下遍历目录,应用最多的应该就是 System.IO.DirectoryInfo.GetDirectories或GetFiles了,但是当目录特别大,文件特别多时,效率不尽人意,此时我们很容易想到 ...
- windows中操作文件和目录的函数
1.文件操作函数 CreateFile();//创建或打开文件 ReadFile();//从文件读 WriteFile();//向文件写 SetFilePoi ...
- Windows FindFirstFile利用
目前大多数程序都会对上传的文件名加入时间戳等字符再进行MD5,然后下载文件的时候通过保存在数据库里的文件ID读取文件路径,一样也实现了文件下载,这样我们就无法直接得到我们上传的webshell文件路径 ...
- C/C++ 中判断某一文件或目录是否存在
方法一:C++中比较简单的一种办法(使用文件流打开文件) #include <iostream> #include <fstream> using namespace std; ...
- php黑魔法之解析问题
code如下: <?php $a=$_GET[a]; $b=is_file($a); var_dump($b); ?> 可以看到1.ph< 返回了true 这样不就可以绕过这个的过滤 ...
- Deformity PHP Webshell、Webshell Hidden Learning
目录 . 引言 . webshell原理介绍 . webshell的常见类型以及变种方法 . webshell的检测原理以及检测工具 . webshell隐藏反检测对抗手段 0. 引言 本文旨在研究W ...
- 在windows 、linux下读取目录下所有文件名
Windows要引入的头文件是<Windows.h> 主要是两个函数FindFirstFile.FindNextFile MSDN里是这么说的: FindFirstFile functio ...
- SIFT算法的应用--目标识别之Bag-of-words模型
原文:http://blog.csdn.net/v_JULY_v/article/details/6555899 SIFT算法的应用 -目标识别之用Bag-of-words模型表示一幅图像 作者:wa ...
随机推荐
- MVC5 Entity Framework学习之创建复杂的数据模型
目录(?)[-] 使用属性来自定义数据模型 DataType属性 StringLength属性 Column 属性 完成对Student实体的更改 Required 属性 Display 属性 Ful ...
- 关于开启url的pathinfo模式
1.apache要开启pathinfo模式,需要在 <Directory /> Options +Indexes +FollowSymLinks +ExecCGI AllowOverrid ...
- Excel教程(13) - 统计函数
AVEDEV 用途:返回一组数据与其平均值的绝对偏差的平均值,该 函数可以评测数据(例如学生的某科考试成绩)的离散度. 语法:AVEDEV(number1,number2,...) 参数:Number ...
- chapter6 深入了解函数
Lua函数是具有特定词法域的第一类值,与其他传统类型的值(string and number)具有相同的权利. 它可以保存在变量和table中,也可以把它当参数传递,也可以作为返回值. 在Lua中有个 ...
- C# 循环语句
本次主要学习了for循环语句. for循环语句的基本格式是: for(初始条件;循环条件;状态改变) { 循环体; } break——中断循环,跳出循环. continue——停止本次循环,进入下次循 ...
- 将数组写入plist文件
data 加载plist [NSBundle mainBundle] [arr writeToURL:<#(NSURL *)#> atomically:<#(BOOL)#>]
- 利用NSURLSession完成的断点续传功能
首先是业务中的.h文件 #import <UIKit/UIKit.h> #import "DenglSingleton.h" @protocol DownLoadVCd ...
- C++中##(两个井号)和#(一个井号)用法
C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结.关 于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化 ...
- iOS 视图控制器生命周期
1.init: 2.viewDidLoad: 3.viewWillAppear: 4.viewDidAppear: 5.viewWillDisappear; 6.viewDidDisappear
- (转载)测试工具monkey
转自http://www.418log.org/post-32.html 1)进入shell 在桌面点开始--运行 输入cmd 点确定 或打开 cmd.exe 进入sdk tools目录如: 1 C: ...