Windows 下 C++ 监控文件修改 - 详细教程及示例代码
要在 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, ¤tWriteTime);
if (CompareFileTime(¤tWriteTime, &lastWriteTime) != 0) {
std::cout << "文件已被修改" << std::endl;
break;
}
// 等待一段时间后再次检查
Sleep(1000);
}
// 关闭文件句柄
CloseHandle(fileHandle);
return 0;
}
在以上代码中,我们首先使用 CreateFile 函数打开要监控的文件,并获取文件的初始修改时间。然后,我们使用一个无限循环来检查文件的修改时间是否发生变化。如果发现文件的修改时间与初始修改时间不一致,表示文件已被修改,我们可以进行相应的处理。在每次检查后,我们使用 Sleep 函数暂停一段时间,以减轻 CPU 负载。
请注意,以上代码只能监控文件是否被修改,不能监控文件内容的具体变化。如果需要监控文件内容的变化,你可能需要使用其他技术,如文件哈希值的比较。
原文地址: https://www.cveoy.top/t/topic/pd61 著作权归作者所有。请勿转载和采集!