अधिकांश ऑपरेटिंग सिस्टम किसी भी विशेष क्रम में निर्देशिका प्रविष्टियों को वापस नहीं करते हैं। यदि आप उन्हें सॉर्ट करना चाहते हैं (आपको शायद यह करना चाहिए कि आप एक मानव उपयोगकर्ता को परिणाम दिखाने जा रहे हैं), तो आपको इसे एक अलग पास में करने की आवश्यकता है। एक तरह से आप ऐसा कर सकता है प्रविष्टियों, कुछ तो जैसे एक std::multimap
में डालने के लिए है:
namespace fs = boost::filesystem;
fs::path someDir("/path/to/somewhere");
fs::directory_iterator end_iter;
typedef std::multimap<std::time_t, fs::path> result_set_t;
result_set_t result_set;
if (fs::exists(someDir) && fs::is_directory(someDir))
{
for(fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter)
{
if (fs::is_regular_file(dir_iter->status()))
{
result_set.insert(result_set_t::value_type(fs::last_write_time(dir_iter->path()), *dir_iter));
}
}
}
फिर आप result_set
के माध्यम से पुनरावृति कर सकते हैं और मैप की boost::filesystem::path
प्रविष्टियों आरोही क्रम में हो जाएगा।
यह आपके अन्य प्रश्न से अलग कैसे है: http://stackoverflow.com/questions/4279164/cboost-file-system-to-return-a-list-of-files-older-than-a- विशिष्ट- पहर? नबुलके ने आपको एक उत्तर दिया है जो आपको सही दिशा में इंगित करना चाहिए। वहां से वेक्टर में फ़ाइलों को जोड़ने और उन्हें सॉर्ट करने में बहुत मुश्किल नहीं है। – Ralf
[सी ++: संभावित फ़ाइल से पुरानी फ़ाइलों की सूची लौटने के लिए बूस्ट फ़ाइल सिस्टम का संभावित डुप्लिकेट] (https://stackoverflow.com/questions/4279164/cboost-file-system-to-return-a-list-of -फाइल-पुराने-से-विशिष्ट-समय) – halfer