c++ - 从 C++ 中的锁定文件获取创建时间、上次访问时间和上次修改时间

标签 c++ boost boost-filesystem

我目前正在尝试修复遗留应用程序代码中的一个错误,该代码基本上使用 GetFileTime函数通过 HANDLE 检索文件信息通过使用 CreateFileW 获得功能。

当它尝试处理已由其他进程(如*.ldf)打开的文件时,就会出现问题。和*.mdf SQL Server 打开的文件。尝试获取文件 HANDLE 时抛出错误.

作为替代方案,我注意到 boost库被用作项目中的依赖项,因此我发现以下代码示例有效:

#include <boost/filesystem.hpp>

using namespace boost::filesystem;

path filePath("path/to/the/file.ext");

std::cout << file_size(filePath) << "\n"; // Getting file size
std::cout << last_write_time(filePath) << "\n"; // Getting write/modified time

使用这段代码,我们可以获得文件大小和上次写入时间。但是,我仍然需要创建时间和上次访问时间。我有什么想法可以实现它吗?

最佳答案

Boost FileSystem 似乎不支持检索文件的创建/上次访问时间。

在这种情况下,我可能会使用FindFirstFile(和FindClose)来获取您想要的信息:

WIN32_FIND_DATA GetFileInfo(char const *path) { 
    WIN32_FIND_DATA data;

    HANDLE h;

    h = FindFirstFile(path, &data);
    FindClose(h);
    return data;
}

这不需要打开文件,因此它可以检索有关文件的数据,即使该文件当前在另一个进程中打开。

关于c++ - 从 C++ 中的锁定文件获取创建时间、上次访问时间和上次修改时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41006174/

相关文章:

java - 如何使用gui的java代码在cmd上运行两个c++文件

C++ BOOST 库和捆绑属性

c++ - 如何比较 time_t 和 std::filesystem::file_time_type

c++ - 在 Mac OS 上安装 MongoDB C++ 驱动程序

c++ - 如何在 C++ 中遍历目录时对数据进行分组

c++ - 类的 unique_copy 无法识别运算符<

c++ - 正确编写 for 循环、正态循环和反向循环、C++ 基础知识

c++ - 是否可以从 C++ 中的线程返回退出代码?

c++ - 使用 libpcl_surface 在 boost::math::lanczos 中调试段错误

c++ - C++无法使用cygwin链接到Boost库