Подтвердить что ты не робот

Как я могу получить список файлов в папке, в которой файлы отсортированы с измененным временем даты

Мне нужен список файлов в папке, и файлы сортируются с измененным временем даты.

Я работаю с С++ под Linux, поддерживается библиотека Boost.

Может кто-нибудь, пожалуйста, предоставит мне пример кода того, как это реализовать?

4b9b3361

Ответ 1

большинство операционных систем не возвращают записи каталога в каком-либо конкретном порядке. Если вы хотите отсортировать их (вероятно, вам следует, если вы собираетесь показывать результаты человеческому пользователю), вам нужно сделать это в отдельном проходе. Один из способов сделать это - вставить записи в 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 будут в порядке возрастания