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

实现 C++ 查找指定目录上所有文件名

2012-09-06 
实现 C++ 查找指定目录下所有文件名rt查询指定目录所有的文件名称。。。。怎么实现啊?最好不要 MFC里面的类[解

实现 C++ 查找指定目录下所有文件名
rt

查询指定目录所有的文件名称。。。。 怎么实现啊?

最好不要 MFC里面的类

[解决办法]
windows 有API。
FindFistFile FindNextFile FindClose。
linux 没用过。
[解决办法]
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命令不会。

[解决办法]

C/C++ code
char * filename[20 = {0};int FindFileName(){    WIN32_FIND_DATA data;    HANDLE hfind;    char nameRule[6] = {0};    char tempname[100] = {0};    int i = 0;    memcpy(nameRule,"*.*",6);    hfind = FindFirstFile(nameRule,&data);    while( hfind != INVALID_HANDLE_VALUE )     {         memset(tempname,0,sizeof(tempname));        strcpy(tempname,data.cFileName);        size_t namelen = strlen(tempname);        tempname[namelen] = '\0';        filename[i] = new char[namelen+1];        memcpy(filenam[i],tempname,namelen+1);        i++;        if(  !FindNextFile(hfind,   &data)   )         {             hfind = INVALID_HANDLE_VALUE;         }     }    CloseHandle(hfind);    return i;
[解决办法]
linux下面用
opendir
readdir
lstat

热点排行
Bad Request.