
I am just learning C++ and for a first project I would like to write a program which goes recursively through a directory tree and returns the newest and the oldest file date. I have been following the documentation, but I couldn't really find a working example for a recursive algorithm. Shell I start by using this code from the v2 documentation? ---------------------------------- bool find_file( const path & dir_path, // in this directory, const std::string & file_name, // search for this name, path & path_found ) // placing path here if found { if ( !exists( dir_path ) ) return false; directory_iterator end_itr; // default construction yields past-the-end for ( directory_iterator itr( dir_path ); itr != end_itr; ++itr ) { if ( is_directory(itr->status()) ) { if ( find_file( itr->path(), file_name, path_found ) ) return true; } else if ( itr->path().filename() == file_name ) // see below { path_found = itr->path(); return true; } } return false; } ------------------------------- The other way I figured out is with recursive_directory_iterator: ------------------------------ #include "boost/filesystem.hpp" #include <iostream> namespace fs = boost::filesystem; fs::recursive_directory_iterator end; fs::recursive_directory_iterator dir("e:\\docs"); void main() { for ( ; dir != end; ++dir ) { std::cout << *dir << std::endl; } } ------------------------------- Is it safe to use recursive_directory_iterator on a really big directory tree? I mean is it going to copy the whole tree into memory? Does it walk through the whole directory tree the moment it's called, or it only accesses the disk on a ++ operation one-by-one? I still haven't looked into how to compare two files' date, but could you give a hint about which function shell I use? Is it possible to use just a simple < or > operation on file dates, or I need to write manually if year1 > year2 and if month1 > month2, etc? Thanks in advance, Zsolt