如何使用 cpp 文件系统在目录中查找最新文件

How to find the most recent file in a directory using cpp filesystem

本文关键字:查找 最新 文件 何使用 cpp 文件系统      更新时间:2023-10-16

>我正在尝试获取日志目录中的最新文件。我正在使用 c++ 和filesystem库。

我尝试使用 experimental/filesystem 中的directory_iterator来迭代目录中的每个文件,并使用 std::max_element 比较每个文件的last_write_time以获得更大的文件。

namespace fs = std::experimental::filesystem;
auto dir_it = fs::directory_iterator(my_path);
auto path = *std::max_element(fs::begin(dir_it), fs::end(dir_it), [](const fs::directory_entry& f1, const fs::directory_entry& f2){
  return fs::last_write_time(f1.path()) < fs::last_write_time(f2.path());
});

我希望得到一个fs::directory_entry的对象,但是当我打印路径时,它是空的。所以我查看了函数内部的比较元素,每一步都f1.path() == f2.path(),所以输出是可以理解的,但我没有弄清楚为什么比较函数不起作用。

max_element需要一个前向迭代器,而directory_iterator是一个输入迭代器。

因此,如果你想以这种方式做事,你需要从迭代器创建一个容器,或者自己手动编写一个循环。