首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么遍历磁盘罗列所有指定后缀名文件

2013-03-10 
如何遍历磁盘罗列所有指定后缀名文件int main(){Search(F:,*.txt)return true}bool Search(TCHAR *P

如何遍历磁盘罗列所有指定后缀名文件

int main()
{
Search("F:","*.txt");
return true;
}


bool Search(TCHAR *Path,TCHAR *File)
{
HANDLE hFind;
WIN32_FIND_DATA wfd;

ZeroMemory(&wfd,sizeof(WIN32_FIND_DATA));
TCHAR PathTemp[512];
memset(PathTemp,0,sizeof(PathTemp));
sprintf(PathTemp,"%s\\*.*",Path);
hFind=FindFirstFile(PathTemp,&wfd);
if(INVALID_HANDLE_VALUE==hFind)
{
MessageBox(NULL,"INVALID_HANDLE_VALUE","FindFirstFile",MB_OK);
return false;
}

do
{
if('.'==wfd.cFileName[0])
{
continue;
}

if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
sprintf(PathTemp,"%s\\%s",Path,wfd.cFileName);
//MessageBox(NULL,PathTemp,"Directory",MB_OK);
printf(PathTemp);
printf("\n");
Search(PathTemp,File);
}
else
{
if(0==strcmp(File,wfd.cFileName))
{
sprintf(PathTemp,"%s\\%s",Path,wfd.cFileName);
MessageBox(NULL,"Found",PathTemp,MB_OK);
//printf(PathTemp);
//printf("\n");
}
}

}while(FindNextFile(hFind,&wfd));

FindClose(hFind);

return true;

}


怎么改改啊?
[解决办法]
在cmd窗口中执行以下命令:
del c:\alltxt.txt >NUL 2>NUL
dir c:\*.txt /b /s /a-d >>c:\alltxt.txt
dir d:\*.txt /b /s /a-d >>c:\alltxt.txt
dir e:\*.txt /b /s /a-d >>c:\alltxt.txt
dir f:\*.txt /b /s /a-d >>c:\alltxt.txt

然后看文件c:\alltxt.txt的内容
[解决办法]
引用:
眼过千遍不如手过一遍

假马甲
[解决办法]
system("dir /b /a-d c:\\*.* >d:\\allfiles.txt");
//读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字
system("dir /b /ad  c:\\*.* >d:\\alldirs.txt");
//读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字
请记住,能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作,而不要用各种API获取或者操作,因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时,API会处理的不全面或陷入死循环,而shell命令不会。

[解决办法]
sprintf(PathTemp,"%s\\*.*",Path);
*.*这里替换成你需要的扩展名就可以
[解决办法]
远程你不会“映射网络驱动器”吗?

热点排行