C++:boost file system to return a list of files older than a specific time

后端 未结 2 1942
萌比男神i
萌比男神i 2021-01-11 19:03

I am using the Boost::FileSystem library with C++ running under Linux platform and I have a question following:

I would like to have a list of files whi

相关标签:
2条回答
  • 2021-01-11 19:43

    You can use a std::map(last_write_time, fileName) to store the file last modified time and the absolute file path and the do an in-order traversal to sort the data.

    0 讨论(0)
  • 2021-01-11 19:48

    Boost::filesystem doesn't offer a function exactly like that. But you can use this:

    http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v3/doc/reference.html#last_write_time

    as a basis to write your own. Here is some sample code using last_write_time:

    #include <boost/filesystem/operations.hpp>
    #include <ctime>
    #include <iostream>
    
    int main( int argc , char *argv[ ] ) {
       if ( argc != 2 ) {
          std::cerr << "Error! Syntax: moditime <filename>!\n" ;
          return 1 ;
       }
       boost::filesystem::path p( argv[ 1 ] ) ;
       if ( boost::filesystem::exists( p ) ) {
          std::time_t t = boost::filesystem::last_write_time( p ) ;
          std::cout << "On " << std::ctime( &t ) << " the file " << argv[ 1 ] 
         << " was modified the last time!\n" ;
          std::cout << "Setting the modification time to now:\n" ;
          std::time_t n = std::time( 0 ) ;
          boost::filesystem::last_write_time( p , n ) ; 
          t = boost::filesystem::last_write_time( p ) ;
          std::cout << "Now the modification time is " << std::ctime( &t ) << std::endl ;
          return 0 ;
       } else {
          std::cout << "Could not find file " << argv[ 1 ] << '\n' ;
          return 2 ;
       }
    }
    
    0 讨论(0)
提交回复
热议问题