65,211
社区成员
发帖
与我相关
我的任务
分享/******************************************************************************
*
* 演示查找文件功能
*
* 操作系统: Windows XP Home Edition Service Pack 3
* 开发环境: Visual Studio . NET 2008 Service Pack 1
* 作者: 高宏伟
* 时间: 2009-03-04 22:04:02
* QQ: 21807822
* Blog: http://blog.donews.com/dukejoe/
* 地点: 黑龙江省哈尔滨市道里区通达街
* 注释: 新建一个Console工程,默认即可,不需要新文件
*****************************************************************************/
#include <iostream>
#include <string>
// 高宏伟 加入windows.h
#include <windows.h>
using namespace std;
void find(char *IpPath)
{
char szFind[100];
char szFile[100];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,IpPath);
strcat(szFind,"*.*");
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
// 高宏伟 你的单词写错了
//if(INUALID_HANDLE_VALUE==hFind)
if (INVALID_HANDLE_VALUE == hFind)
return;
while(true)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFile,IpPath);
// 高宏伟 你用的是. 这里是函数,参数之间要用逗号
//strcat(szFile."");
strcat(szFile,"");
strcat(szFile,FindFileData.cFileName);
// 高宏伟 如果要遍历子目录,这里要加上 *.*
strcat(szFile,"\\*.*");
find(szFile);
}
}
else
{
cout <<FindFileData.cFileName << endl ;
}
if(!FindNextFile(hFind,&FindFileData))
break;
}
FindClose(hFind);
}
void main()
{
// 高宏伟 我随便改了一个文件比较多的目录做测试。
// 字符串的最后要加上 \\
// 在C语言里\\ 才代表\ 这里我改动了一下。
char *p="D:\\TDDOWNLOAD\\";
find(p);
}