c++获取指定路径下按文件修改时间排序最近的两个文件名称
时间: 2023-10-28 10:04:34 浏览: 295
获取指定路径所用文件的文件名
你可以使用C++的标准库和操作系统相关的API来实现该功能。下面是一个实现的思路:
1. 首先,使用操作系统相关的API获取指定路径下的文件列表,并记录每个文件的修改时间和文件名。
2. 然后,使用C++的标准库中的sort函数,按照文件修改时间从大到小排序文件列表。
3. 最后,取出排序后的前两个文件即可。
下面是一个简单的示例代码:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
#include <chrono>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
// 指定路径
fs::path dir_path("E:/test");
// 存储文件列表
std::vector<std::pair<fs::path, std::chrono::system_clock::time_point>> file_list;
// 遍历文件
for (auto& file : fs::directory_iterator(dir_path))
{
if (fs::is_regular_file(file))
{
// 记录文件名和修改时间
auto file_time = fs::last_write_time(file);
file_list.emplace_back(file.path(), file_time);
}
}
// 按修改时间从大到小排序
std::sort(file_list.begin(), file_list.end(),
[](const auto& a, const auto& b)
{
return a.second > b.second;
});
// 输出前两个文件名
if (file_list.size() >= 2)
{
std::cout << "Latest file: " << file_list[0].first.filename() << std::endl;
std::cout << "Second latest file: " << file_list[1].first.filename() << std::endl;
}
return 0;
}
```
注意:这里使用了C++17中的std::filesystem库,需要在编译时加上`-std=c++17`选项。
阅读全文