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