windwos C语言实时监控某个目录下是否有文件的创建
时间: 2024-01-21 11:05:00 浏览: 71
你可以使用Windows API中的FindFirstChangeNotification()和FindNextChangeNotification()函数实现对目录的实时监控。下面是一个简单的示例代码:
```
#include <stdio.h>
#include <windows.h>
void monitorDirectoryChanges(const char* path) {
HANDLE dirHandle = FindFirstChangeNotification(path, FALSE, FILE_NOTIFY_CHANGE_FILE_NAME);
if (dirHandle == INVALID_HANDLE_VALUE) {
printf("Failed to monitor directory changes\n");
return;
}
while (TRUE) {
DWORD waitStatus = WaitForSingleObject(dirHandle, INFINITE);
if (waitStatus == WAIT_OBJECT_0) {
printf("A new file has been created in %s\n", path);
FindNextChangeNotification(dirHandle);
} else {
printf("Failed to wait for directory change notification\n");
break;
}
}
FindCloseChangeNotification(dirHandle);
}
int main() {
char path[] = "C:\\Some\\Directory";
monitorDirectoryChanges(path);
return 0;
}
```
在上面的代码中,我们定义了一个函数monitorDirectoryChanges()来监控指定目录下的文件变化。函数首先使用FindFirstChangeNotification()函数来获取一个目录变化的句柄,然后通过WaitForSingleObject()函数等待目录变化事件的发生,在事件发生后,我们就可以输出一条消息指示新文件已经被创建,之后使用FindNextChangeNotification()函数获取下一个目录变化事件的句柄。如果出现错误,程序会输出相应的错误消息。
在主函数中,我们调用monitorDirectoryChanges()函数,并传入要监控的目录路径。注意,这个路径必须是一个有效的目录路径。
阅读全文