C ++: تعزيز نظام الملفات لإرجاع قائمة الملفات الأقدم من وقت محدد
-
28-09-2019 - |
سؤال
أنا أستخدم Boost::FileSystem
مكتبة مع C ++ تعمل تحت نظام Linux ولدي سؤال يتبع:
أرغب في الحصول على قائمة بالملفات التي يتم تعديلها أقدم من وقت تاريخ معين. لا أعرف ما إذا كان boost::FileSystem
عرض مثل هذه الطريقة:
vector<string> listFiles = boost::FileSystem::getFiles("\directory", "01/01/2010 12:00:00");
إذا كانت الإجابة بنعم ، هل يمكنك تقديم نموذج رمز؟
المحلول
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 ;
}
}
نصائح أخرى
يمكنك استخدام MAP STD :: Last_write_time ، اسم الملف) لتخزين الملف الأخير المعدّل ومسار الملف المطلق و DO ANDERDERSAL لفرز البيانات.
لا تنتمي إلى StackOverflow