网易建站模板,做情诗网站,佛山网站建设哪个好点,沈阳学网站制作学校可能各位看官们有更好的方法#xff0c;请不吝赐教。 #ifdef _WIN32
#include io.h
#else
#include unistd.h
#include stdio.h
#include dirent.h
#include sys/stat.h
#endif win32平台引用io.h里面的信息。 主要定义了一个void df…可能各位看官们有更好的方法请不吝赐教。 #ifdef _WIN32
#include io.h
#else
#include unistd.h
#include stdio.h
#include dirent.h
#include sys/stat.h
#endif win32平台引用io.h里面的信息。 主要定义了一个void dfsFolder(string folderPath, int depth 0);方法对其进行递归遍历。 具体的实现为 1 void dfsFolder( string folderPath, int depth)2 {3 #ifdef WIN324 _finddata_t FileInfo;5 string strfind folderPath \\*;6 long Handle _findfirst(strfind.c_str(), FileInfo);7 8 if (Handle -1L)9 {
10 cerr can not match the folder path endl;
11 exit(-1);
12 }
13 do{
14 //判断是否有子目录
15 if (FileInfo.attrib _A_SUBDIR)
16 {
17 //这个语句很重要
18 if( (strcmp(FileInfo.name,.) ! 0 ) (strcmp(FileInfo.name,..) ! 0))
19 {
20 string newPath folderPath \\ FileInfo.name;
21 dfsFolder(newPath);
22 }
23 }
24 else
25 {
26 string filename (folderPath \\ FileInfo.name);
27 28 cout folderPath \\ FileInfo.name endl;
29 }
30 }while (_findnext(Handle, FileInfo) 0);
31
32 _findclose(Handle);
33 #else
34 DIR *dp;
35 struct dirent *entry;
36 struct stat statbuf;
37 if((dp opendir(folderPath.c_str())) NULL) {
38 fprintf(stderr,cannot open directory: %s\n, folderPath.c_str());
39 return;
40 }
41 chdir(folderPath.c_str());
42 while((entry readdir(dp)) ! NULL) {
43 lstat(entry-d_name,statbuf);
44 if(S_ISDIR(statbuf.st_mode)) {
45
46 if(strcmp(.,entry-d_name) 0 ||
47 strcmp(..,entry-d_name) 0)
48 continue;
49 printf(%*s%s/\n,depth,,entry-d_name);
50 dfsFolder(entry-d_name,depth4);
51 } else {
52 string filename entry-d_name;
53 54 printf(%*s%s\n,depth,,entry-d_name);
55 }
56 }
57 chdir(..);
58 closedir(dp);
59 #endif
61 } chdir 是C语言中的一个系统调用函数同cd其中对目录.及..进行特殊的判断因为.是表示当前目录,..表示父目录。 如果不进行特殊判定的话则进入死循环。 一个很简单的功能希望可以帮助得到需要的同学们转载于:https://www.cnblogs.com/tickdream/p/3315726.html