Get an ordered list of files in a folder

Roman Rdgz picture Roman Rdgz · Jun 22, 2015 · Viewed 11.3k times · Source

I have used boost::filesystem::directory_iterator in order to get a list of all the available files into a given folder.

The problem is that I supposed this method would give me the files in alphabetical order, while the results seem pretty random.

Is there any fancy way of alphabetically sorting them?

My current code:

if(boost::filesystem::is_directory(myFolder)){
    // Iterate existing files
    boost::filesystem::directory_iterator end_iter;
    for(boost::filesystem::directory_iterator dir_itr(myFolder);
        dir_itr!=end_iter; dir_itr++){

        boost::filesystem::path filePath;
        // Check if it is a file
        if(boost::filesystem::is_regular_file(dir_itr->status())){
            std::cout << "Reading file " << dir_itr->path().string() << std::cout;
        }
    }
}

Answer

Tyler Jandreau picture Tyler Jandreau · Jun 22, 2015

The fanciest way I've seen to perform what you want is straight from the boost filesystem tutorial. In this particular example, the author appends the filename/directory to the vector and then utilizes a std::sort to ensure the data is in alphabetical order. Your code can easily be updated to use this same type of algorithm.