溫馨提示×

如何用C++檢測文件是否已被覆蓋

c++
小樊
83
2024-09-06 08:32:25
欄目: 編程語言

要使用C++檢測文件是否已被覆蓋,你可以使用文件的最后修改時(shí)間

#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 {
        // 無法獲取文件信息,可能文件不存在或其他錯(cuò)誤
        return false;
    }
}

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

    // 獲取文件的最后修改時(shí)間
    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;

    // 在此處執(zhí)行你想要檢查文件是否被覆蓋的操作

    // 檢查文件是否已被覆蓋
    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;
}

這個(gè)示例首先獲取文件的最后修改時(shí)間,然后執(zhí)行一些操作(在此示例中,這部分代碼未實(shí)現(xiàn))。之后,它再次檢查文件的最后修改時(shí)間并與之前的時(shí)間進(jìn)行比較。如果時(shí)間發(fā)生了變化,說明文件已被覆蓋。請注意,這個(gè)方法并不完美,因?yàn)槲募赡茉跈z查之間被修改,但在實(shí)際應(yīng)用中,這種方法通常足夠了。

0