首页 文章

C通过修改时间获取目录中的文件

提问于
浏览
3

我想编写一个C函数,用一个目录中所有文件的文件名填充向量 . 此外,我希望这个向量按文件的最后修改时间排序 .

我可以使用boost :: filesystem读取目录中的所有文件并将其传递给向量,但是这些文件通过文件名加载到向量中,然后我对文件进行了统计并执行了一个效率不高的排序 .

有人知道快速的方法吗?例如,ls -lhctr几乎可以立即执行,因此C应该能够非常快速地为大型目录执行此操作 .

编辑:如果可能的话,我也希望它具有亚毫秒级的分辨率 .

4 回答

  • 0

    您可以使用Boost.Filesystem迭代目录,并在每个文件上调用last_write_time() .

    然后使用 last_write_time 调用的结果将文件名存储在std::multimap中作为键 . 这样,分类在插入容器时自动完成 .

  • 0

    我知道在Qt的框架中有一个QFileInfo类将提供该信息 . http://doc.qt.nokia.com/4.7-snapshot/qfileinfo.html

    我对提升并不熟悉,但我认为这应该同样有效:http://www.boost.org/doc/libs/1_32_0/libs/filesystem/doc/operations.htm#last_write_time

  • 2

    我并不是说要启动伟大的C系统()战斗,但你提到“ls -lhctr”几乎立即返回你的答案,那么为什么不使用system()函数呢?尝试:

    system("ls -lhctr > out.txt");

    然后使用fstream标头来getline()那个数据?

    当然,使用system()可以保证此解决方案无法移植到其他操作系统,但您无论如何都可能不关心这样做 .

  • 2

    也许 map/multimap<std::time_t/dt::ptime, std::string/fs::path>

相关问题