Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get an ordered list of files in a folder

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;
        }
    }
}
like image 344
Roman Rdgz Avatar asked Jun 22 '15 14:06

Roman Rdgz


1 Answers

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.

like image 82
Tyler Jandreau Avatar answered Sep 28 '22 13:09

Tyler Jandreau