温馨提示×

如何用C++检测文件是否已被覆盖

c++
小樊
82
2024-09-06 08:32:25
栏目: 编程语言

要使用C++检测文件是否已被覆盖,你可以使用文件的最后修改时间

#include<iostream>
#include <fstream>
#include <sys/stat.h>
#include <unistd.h>

bool isFileModified(const std::string& filePath, time_t lastModificationTime) {
    struct stat fileInfo;
    if (stat(filePath.c_str(), &fileInfo) == 0) {
        return fileInfo.st_mtime > lastModificationTime;
    } else {
        // 无法获取文件信息,可能文件不存在或其他错误
        return false;
    }
}

int main() {
    std::string filePath = "path/to/your/file.txt";
    struct stat fileInfo;

    // 获取文件的最后修改时间
    if (stat(filePath.c_str(), &fileInfo) != 0) {
        std::cerr << "Error: Unable to get file information."<< std::endl;
        return 1;
    }

    time_t lastModificationTime = fileInfo.st_mtime;

    // 在此处执行你想要检查文件是否被覆盖的操作

    // 检查文件是否已被覆盖
    bool isModified = isFileModified(filePath, lastModificationTime);
    if (isModified) {
        std::cout << "The file has been overwritten."<< std::endl;
    } else {
        std::cout << "The file has not been overwritten."<< std::endl;
    }

    return 0;
}

这个示例首先获取文件的最后修改时间,然后执行一些操作(在此示例中,这部分代码未实现)。之后,它再次检查文件的最后修改时间并与之前的时间进行比较。如果时间发生了变化,说明文件已被覆盖。请注意,这个方法并不完美,因为文件可能在检查之间被修改,但在实际应用中,这种方法通常足够了。

0