反向迭代文件目录以查找最新文件

时间:2017-08-06 13:37:57

标签: c++

我有一个充满文件的目录,每个文件都根据它以YYYYMMDD格式创建的日期命名,确保它们从最少到最近的数字排序。我只需要读取今天未创建的最新文件。我的代码是:

#include <string>
#include <filesystem>

using namespace std;
using namespace std::experimental::filesystem::v1;

path dirPath("C:/Logs/");
path recentPath;
string todaysDate("20170806"); // Or whatever the current date is, gotten automatically

for (auto it = directory_iterator(dirPath); it != directory_iterator(); it++)
{
    auto p = it->path();
    auto base = p.stem();
    auto ext = p.extension();

    if (ext == ".log" && base != todaysDate)
    {
        recentPath= p;
    }
}

这是有效的,因为迭代器以字母数字顺序遍历目录。但是,根据directory_iterator的文档:

  

除了每个目录条目外,未指定迭代顺序   只访问过一次。

所以我的主要问题是:

  1. 此代码不能保证有效,因为规范并不总能保证相同类型的实现
  2. 我必须浏览所有旧文件才能找到最新的文件。
  3. 有没有办法可以更快地和/或以保证的方式到达我需要的文件?

0 个答案:

没有答案