对于经常变化的文件,会采用定时器去读取文件,然后比较文件是否有变更;如果文件更新频率高而且定时器时间短,会占用大量机器资源。特别是当定时时间较短,文件本身更新频率远远小于定时器时间时。
采用操作系统提供的文件变化事件降低对资源的浪费。
#include <iostream>
#include <Windows.h>
int main() {
// 监控文件
LPCWSTR filePath = L"D:\\it\\windows\\file_modify_moniter\\file_modify_moniter\\1.txt";
HANDLE hFile;
while (1)
{
hFile = CreateFile(filePath,
FILE_READ_ATTRIBUTES | SYNCHRONIZE,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS,
NULL);
if (hFile == INVALID_HANDLE_VALUE) {
std::cerr << "Failed to open file: " << GetLastError() << std::endl;
Sleep(3000); // 休眠1秒
continue;
}
break;
}
std::cout << "Sucessed to open directory: " << "D:\\it\\windows\\file_modify_moniter\\file_modify_moniter\\1.txt" <&l