本来想应该很简单的,findfirstfile findnextfile ,findclose
可是动手做做还真傻掉了,小错误不断,现在终于搞定了,总结一下
1.语言最好用c,起先用的是delphi,为了显示方便,但却陷入了字符数组转pchar和string的漩涡之中,应该用delphi的findfirst吧,慢点再试下。。c语言就没这个问题了,反正都是char*...
2.finddata 的dwFileAttributes,我起先是用finddata.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY来判断,结果基本是false,这里忽略了目录也可以有其他属性,正确做法见源码..
void searchFile(char * filepath) { WIN32_FIND_DATA finddata; HANDLE findHandle; char filename[MAX_PATH -1]; wsprintf(filename,"%s%s",filepath,"//*"); findHandle = FindFirstFile(filename,&finddata); while (FindNextFile(findHandle,&finddata) !=0 ) { if (finddata.cFileName[0] != '.') { if ((finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)== FILE_ATTRIBUTE_DIRECTORY ) { // printf("----%s/n",finddata.cFileName ); char subpath[MAX_PATH-1]; /* lstrcpy(subfile,finddata.cFileName);*/ wsprintf(subpath,"%s%s//",filepath,finddata.cFileName); /* int len = lstrlen(finddata.cFileName);*/ // printf("sub file:%s/n" ,subpath ); searchFile(subpath); } else printf("%s/n",finddata.cFileName); } // } FindClose(findHandle); }
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。