Как заявил Эмиль Кормиер, вы не сможете узнать время создания файла в Unix.Тем не менее, вы все равно можете искать «свежие» файлы, в зависимости от вашего определения «свежие», просматривая время последнего доступа.Это достигается с помощью вызова следующим образом:
boost::filesystem::path p( "somefile" );
std::time_t t = boost::filesystem::last_write_time( p );
boost::ptime lastAccessTime = boost::ptime::from_time_t( t );
Поэтому, если вы посмотрите на boost::filesystem::directory_iterator
, вы сможете перебирать каталог, то есть "./", как вы указали в своем вопросе, иСравните lastAccessTime
, приведенный в примере выше, с диапазоном, указанным в вашем вопросе.
Таким образом, я бы сделал это, предполагая, что oldTime
был определен ранее, следующим образом:
boost::filesystem::path dir( "./" );
boost::ptime nowTime( boost::second_clock::local_time() );
boost::filesystem::directory_iterator dirIter( dir ), dirIterEnd;
while ( dirIter != dirIterEnd )
{
if ( boost::filesystem::exists( *dirIter ) && !boost::filesystem::is_directory( *dirIter ) )
{
std::time_t t = boost::filesystem::last_write_time( *dirIter );
boost::ptime lastAccessTime = boost::ptime::from_time_t( t );
if ( lastAccessTime >= oldTime && lastAccessTime <= nowTime )
{
std::cout << "File meets criteria: " << (*dirIter).filename() << std::endl;
}
}
++dirIter;
}
Надеюсь, это поможет!
Вы можете уточнить это, постоянно сохраняя последний раз, когда вы проверяли каталог и / или последний список файлов, присутствующих в каталоге, когда вы последний раз проверяли, и использовать это как точкувместо сравнения.Без дополнительной информации о ваших намерениях я не могу дать дальнейших указаний.
Соответствующие документы: boost :: Fileystem Reference , boost :: ptime Ссылка