小鱼儿 遍历指点目录下的所有目录中的文件 +扫描当前目录所有文件
因为自己发现文件操作,很多时候都会扫描当前文档。 或者扫描子目录。这个以前就写过,今天自己好好的重写了一面,也写了注释。
用了几个API 而已
FindFirstFile 和 FindNextFile 其实c语言里面也有这个函数。
下面是遍历指点目录的所有文件指定类型文件 包括子目录。
如果想要变量全盘也好写。
只要
for(char i='c';i<'z';i++)
{
UINT Type=GetDriveType(i);
if(Type==DRIVE_FIXED||Type==DRIVE_REMOVABLE)//取硬盘和移动磁盘
{
//调用函数
}
}
程序代码:#include "StdAfx.h"
#include "FindFile.h"
//这里只是测试函数
//一般我们遍历文件都是有目的 同这个写类似病毒一些东西
void Test(WIN32_FIND_DATA *fd)
{
MessageBox(0,fd->cFileName,0,0);
}
BOOL FindFile(char *pFileName, char * FindFileType)
{
WIN32_FIND_DATA fd;
HANDLE hFind;
char Type[10]={0};
sprintf(Type,".%s",FindFileType);
//HANDLE hFindType;//查找对应文件类型
char FileName[260]={0};
sprintf(FileName,"%s\\*.*",pFileName);
ZeroMemory(&fd,sizeof(fd));
if(0 == strlen(FileName))
{
MessageBox(0,"文件名不能为空",0,0);
return FALSE;
}
else
{
hFind = FindFirstFile(FileName,&fd);
if(INVALID_HANDLE_VALUE==hFind)
{
return FALSE;
}
else
{
do
{
//查找文件名字中有没与 .文件后缀 注意要加点 因为点在文件名字是特殊符号
//一般是不可以用的。但可以用特殊方法来添加。
//U 盘免疫就是用这中方法来 来建立一个不能用普通方法删除autorun.inf的文件夹
if(strstr(fd.cFileName,Type))
{
Test(&fd);
}
else
{
//当该文档是文件时候进行下列操作
if(fd.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
//除掉 . 表示当前目录 和..上一个目录 这个在dos 中可以看到
if(strcmp(fd.cFileName,".")!=0&&strcmp(fd.cFileName,"..")!=0)
{
char Temp[256]={0};
sprintf(Temp,"%s\\%s",pFileName,fd.cFileName);
FindFile(Temp,FindFileType);
}
}
}
//继续查找下一个文件
} while (FindNextFile(hFind,&fd));
}
}
return TRUE;
}只扫描指定目录的文件不包括子目录
程序代码:#include "StdAfx.h"
#include "FindFiled.h"
BOOL bFind(char *pFileName,char *FileType,pFun FileOpre)
{
bool bisFinish = FALSE;
WIN32_FIND_DATA fd; // data buffer
char FileName[260]={0};
HANDLE hFind;
strcpy(FileName,pFileName);
ZeroMemory(&fd,sizeof(fd));
strcat(FileName,"\\\\*.");
strcat(FileName,FileType);
if(0==strlen(FileName))
{
MessageBox(0,"没有输入文件名",0,0);
return FALSE;
}
else
{
hFind = FindFirstFile(FileName,&fd);
if(INVALID_HANDLE_VALUE == hFind)
{
return FALSE;
}
else
{
do
{
// . 表示当前目录 .. 表示上级目录 所以没有用
if(strcmp(fd.cFileName,".")!=0||strcmp(fd.cFileName,"..")!=0)
{
//MessageBox(0,fd.cFileName,"文件名",0);
FileOpre(&fd);//函数调用函数 其实用函数
}
} while (FindNextFile(hFind,&fd));
}
}
CloseHandle(hFind);
return FALSE;
}









