C/C++ : Get List Files in Directory
I have a problem when want to get list of files in directory or get list of directory and subdirectory using C++. So, I have try to research this problem and get a simple method using dirent library. Please check below code to get list of files in directory or get list of directory and subdirectory using C++.
Create file with name list_file.cpp. Copy code below :
#include <stdio.h> #include <dirent.h> #include <iostream> #include <string> #include <sys/stat.h> using namespace std; bool isDir(string dir) { struct stat fileInfo; stat(dir.c_str(), &fileInfo); if (S_ISDIR(fileInfo.st_mode)) return true; else return false; } void listFiles(string baseDir, bool recursive) { DIR *dp; struct dirent *dirp; string separator; #ifdef linux separator = "/"; #elif _WIN32 separator = "\\"; #endif if ((dp = opendir(baseDir.c_str())) == NULL) { cout << "[ERROR: " << errno << " ] Couldn't open " << baseDir << "." << endl; return; } else { while ((dirp = readdir(dp)) != NULL) { if (dirp->d_name != string(".") && dirp->d_name != string("..")) { string aa = baseDir + separator + dirp->d_name; if (isDir(aa) == true) { cout << "[DIR]\t" << baseDir << dirp->d_name << endl; if(recursive == true) listFiles(aa, true); } else cout << "[FILE]\t" << aa <<endl; } } closedir(dp); } } int main(int argc, char **argv) { string path = "C:\\temp"; listFiles(path, false); return(1); }
Compile code to get list of files in directory or get list of directory and subdirectory using C++ using command :
g++ list_file.cpp -o list_file
if you set listFiles function in second argument to false, we can get only list of files and directory in current directory. Example, the output from my computer is like this (setting argument to false)
C:\temp>list_files [FILE] C:\temp\main.cpp [FILE] C:\temp\main.exe [DIR] C:\tempdirectory [FILE] C:\temp\tempdirectory_04112014.zip
But, if you set the second argument to true, we will get list of files and directory in sub directory. I hope this code can help you to get list of files in directory or get list of directory and subdirectory using C++.