2 //-----------------------------------------------------------------------------
3 #include "gdcmDirList.h"
17 // Constructor / Destructor
19 * \ingroup gdcmDirList
21 * @param dirName root directory name
22 * @param recursive whether we want to explore recursively or not
24 gdcmDirList::gdcmDirList(std::string dirName,bool recursive)
29 Explore(name,recursive);
33 * \ingroup gdcmDirList
36 gdcmDirList::~gdcmDirList(void)
40 //-----------------------------------------------------------------------------
43 //-----------------------------------------------------------------------------
46 * \ingroup gdcmDirList
47 * \brief Get the directory name
48 * @return the directory name
50 std::string gdcmDirList::GetDirName(void)
55 //-----------------------------------------------------------------------------
58 //-----------------------------------------------------------------------------
62 * \ingroup gdcmDirList
63 * \brief Explore a directory with possibility of recursion
64 * @param dirName directory to explore
65 * @param recursive whether we want recursion or not
67 void gdcmDirList::Explore(std::string dirName,bool recursive)
71 NormalizePath(dirName);
74 WIN32_FIND_DATA fileData;
75 HANDLE hFile=FindFirstFile((dirName+"*").c_str(),&fileData);
78 while( (hFile!=INVALID_HANDLE_VALUE) && (found) )
80 fileName=fileData.cFileName;
81 if(fileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
83 if( (fileName!=".") && (fileName!="..") && (recursive) )
84 Explore(dirName+fileName,recursive);
88 this->push_back(dirName+fileName);
91 found=FindNextFile(hFile,&fileData);
95 struct dirent **namelist;
96 int n=scandir(dirName.c_str(), &namelist, 0, alphasort);
98 for (int i= 0;i < n; i++)
100 fileName=namelist[i]->d_name;
101 if(namelist[i]->d_type==DT_DIR)
103 if( (fileName!=".") && (fileName!="..") && (recursive) )
104 Explore(dirName+fileName,recursive);
108 this->push_back(dirName+fileName);
114 //-----------------------------------------------------------------------------