C++: повысить файловую систему, чтобы вернуть список файлов старше определенного времени

Я использую библиотеку Boost::FileSystem с C++, работающую под платформой Linux, и у меня есть следующий вопрос:

Я хотел бы иметь список файлов, которые были изменены старше заданной даты. Я не знаю, предлагают ли boost::FileSystem такой метод, как:

vector<string> listFiles = boost::FileSystem::getFiles("\directory", "01/01/2010 12:00:00");

Если да, не могли бы вы предоставить пример кода?


person olidev    schedule 25.11.2010    source источник


Ответы (2)


Boost::filesystem не предлагает такой функции. Но вы можете использовать это:

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

как основу для написания собственного. Вот пример кода с использованием 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 ;
   }
}
person nabulke    schedule 25.11.2010
comment
Благодарю. Я видел этот пример кода из Boost:fileSystem, но как я могу отсортировать файлы? - person olidev; 26.11.2010
comment
@JoesyXHN: Пожалуйста, покажите мне код, который у вас есть, и я буду рад помочь вам в дальнейшем. Но с вашей стороны требуется некоторое усилие. - person nabulke; 26.11.2010
comment
Привет набулке. Я пытаюсь сделать что-то подобное stackoverflow.com/q/7056882/434051 , я предоставил демо-код, и я не получаю что не так (пока очень похоже на твое)=( - person Rella; 24.08.2011

Вы можете использовать std::map(last_write_time, fileName) для хранения времени последнего изменения файла и абсолютного пути к файлу, а также выполнить обход по порядку для сортировки данных.

person Neeraj    schedule 10.11.2013