要在 Windows 下监控一个文件是否被修改,你可以使用 Windows API 函数来实现。以下是一个简单的示例代码:

#include <iostream>
#include <windows.h>

int main() {
    // 要监控的文件路径
    LPCWSTR filePath = L"C:\path\to\file.txt";

    // 创建文件的句柄
    HANDLE fileHandle = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (fileHandle == INVALID_HANDLE_VALUE) {
        std::cout << "无法打开文件" << std::endl;
        return 1;
    }

    // 获取文件的初始修改时间
    FILETIME lastWriteTime;
    GetFileTime(fileHandle, NULL, NULL, &lastWriteTime);

    // 循环监控文件的修改
    while (true) {
        // 检查文件是否被修改
        FILETIME currentWriteTime;
        GetFileTime(fileHandle, NULL, NULL, &currentWriteTime);

        if (CompareFileTime(&currentWriteTime, &lastWriteTime) != 0) {
            std::cout << "文件已被修改" << std::endl;
            break;
        }

        // 等待一段时间后再次检查
        Sleep(1000);
    }

    // 关闭文件句柄
    CloseHandle(fileHandle);

    return 0;
}

在以上代码中,我们首先使用 CreateFile 函数打开要监控的文件,并获取文件的初始修改时间。然后,我们使用一个无限循环来检查文件的修改时间是否发生变化。如果发现文件的修改时间与初始修改时间不一致,表示文件已被修改,我们可以进行相应的处理。在每次检查后,我们使用 Sleep 函数暂停一段时间,以减轻 CPU 负载。

请注意,以上代码只能监控文件是否被修改,不能监控文件内容的具体变化。如果需要监控文件内容的变化,你可能需要使用其他技术,如文件哈希值的比较。

Windows 下 C++ 监控文件修改 - 详细教程及示例代码

原文地址: https://www.cveoy.top/t/topic/pd61 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录