成语大全网 - 成语解释 - 用C语言编出遍历出某个目录以及其子目录下所有以TXT为扩展名的文本文件

用C语言编出遍历出某个目录以及其子目录下所有以TXT为扩展名的文本文件

#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));

}

}

re