【问题标题】:is there any way to find the last modified file from a directory in C++?有没有办法从 C++ 目录中找到最后修改的文件?
【发布时间】:2020-11-24 22:41:42
【问题描述】:

我试图在 C++ 中查找最后修改的文件(基于时间戳)。 假设目录中有很多文件,但如何获取最后修改的文件? 我曾尝试使用 dirent.h 但需要包含一个额外的头文件并使用 stat 但在 stat 中,我可以获得文件的唯一日期。 有什么办法可以获取目录中所有文件的名称,然后一一读取?

谁能帮帮我? 一个小代码 sn-p 将不胜感激。

操作系统:Windows

【问题讨论】:

  • 如果您有 C++17 或更高版本,您也许可以使用 <filesystem> 执行此操作。不过,我对标准库的这一部分还不够了解。
  • "有没有办法从 C++ 目录中找到最后修改的文件?" - 不,当然不。这是一个无法解决的问题。几十年来,操作系统和文件系统的实现者一直在努力解决这个难题。这是不可行的——它需要时间戳和排序——我们尚未发现的技术。 当然这是可行的!
  • @JesperJuhl 虽然不需要排序。您需要做的就是查看每个文件并记住哪个是最新的。
  • @eerorika 当然。但我想我还是说出了我的观点。该评论并未完全考虑到 100% 的准确度。

标签: c++ windows file file-handling


【解决方案1】:

有没有办法从 C++ 的目录中找到最后修改的文件?

是的。解决方案的所有部分都在标准库中:您可以使用std::filesystem::directory_iterator 获取目录中的一系列文件,您可以使用std::filesystem::last_write_time 获取最后修改时间,您可以使用std:max_element 找到一个范围内的最大值。

但我使用的是旧版本 [比 C++17]

在 C++17 之前,与文件系统的交互在标准库中极为有限。这只能使用操作系统提供的 API 来实现。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 2012-02-15
  • 2022-01-11
相关资源
最近更新 更多