windows和linux获取文件夹内容的一种方法

来源:互联网 发布:企业信息数据 编辑:程序博客网 时间:2024/06/13 10:03

转载自博客:http://blog.csdn.net/c__allen/article/details/7588446
如有侵犯立即删除
windows:
使用头文件:

_finddata_t fileinfo;  intptr_t hFile;  string root;  root.assign(Path);//文件夹绝对路径  int len = root.length();  if ( !IsEndObliqueLine(Path) )//路径的结尾不是‘\’  {      root.append("\\");  }  root.append("*");//路径下的所有文件  hFile = _findfirst(root.c_str(), &fileinfo);  if ( -1 == hFile)  {      assert(false);      return;  }  strcpy(m_CurrentPath, Path);//保存到m_CurrentPath  //清空之前Path的信息  FilesPathVector.clear();//自定义的保存信息的容器  do //保存信息  {      LISTCMD_INFO TmpDirInfo = {0};      TransFileInfo(fileinfo, TmpDirInfo);      FilesPathVector.push_back(TmpDirInfo);  }while(_findnext(hFile, &fileinfo)   ==   0);  

linux:
使用头文件:

<span style="white-space:pre">  </span>DIR *dir;      if ( !(dir = opendir(Path)) )      {          assert(false);          return;      }      <span style="white-space:pre">  </span>strcpy(m_CurrentPath, Path);//保存到m_CurrentPath      struct dirent *d_ent;      char fullpath[128];      FilesPathVector.clear();      while ( (d_ent = readdir(dir)) != NULL )      {          struct stat file_stat;          //if ( strncmp(d_ent->d_name, ".", 1) == 0 )          //{          //  continue;   // 忽略"."目录          //}          memset(fullpath, '\0', sizeof(fullpath));          strcpy( fullpath,  Path);          if ( !strcmp(fullpath, "/") )          {              fullpath[0] = '\0';          }          strcat(fullpath, "/");          strcat(fullpath, d_ent->d_name);          if ( lstat(fullpath, &file_stat) < 0 )          {              assert(false);              return;          }          //保存信息到自己的数据结构,在函数外面保存文件名          LISTCMD_INFO TmpDirInfo = {0};          strcpy(TmpDirInfo.cFileName, d_ent->d_name);          TransFileInfo(&file_stat, TmpDirInfo);          FilesPathVector.push_back(TmpDirInfo);      }      closedir(dir);  值得注意的是,此种方法windows的路径分隔是用'\',而linux用'/',使用时多少有点不便。如果有其他更好得方法,欢迎交流!
0 0