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