我需要列出一个文件夹中的文件列表,并按照它们的修改日期时间排序。
我正在Linux下使用C++,支持Boost库。
请问有人能提供一些样例代码来实现这个功能吗?
大多数操作系统不会以特定的顺序返回目录条目。如果你想对它们进行排序(如果你要将结果显示给人类用户,那么你应该这样做),你需要在单独的过程中完成。一种方法是将条目插入到 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
条目,这些条目将按照升序排列。std::time_t
只精确到秒。 - fduff