windwos c语言实现实时检测"D:\AI质检\ftp_server\client"目录下是否有新文件生成,并打印新文件
时间: 2023-07-07 12:15:15 浏览: 102
您好,这个问题需要使用Windows API函数来实现,以下是示例代码:
```c
#include <windows.h>
#include <stdio.h>
int main() {
// 监视的目录
char* path = "D:\\AI质检\\ftp_server\\client";
// 创建监视器
HANDLE hDir = CreateFile(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (hDir == INVALID_HANDLE_VALUE) {
printf("Failed to create directory monitor.\n");
return 1;
}
// 监视目录中是否有新文件
char buffer[1024];
DWORD dwBytes = 0;
while (TRUE) {
BOOL bSuccess = ReadDirectoryChangesW(hDir, buffer, sizeof(buffer), TRUE, FILE_NOTIFY_CHANGE_FILE_NAME, &dwBytes, NULL, NULL);
if (!bSuccess) {
printf("Failed to read directory changes.\n");
break;
}
// 打印新文件名
FILE_NOTIFY_INFORMATION* pInfo = (FILE_NOTIFY_INFORMATION*)buffer;
while (pInfo) {
if (pInfo->Action == FILE_ACTION_ADDED) {
WCHAR fileName[MAX_PATH];
memset(fileName, 0, sizeof(fileName));
wcscpy_s(fileName, pInfo->FileName);
printf("New file created: %ls\n", fileName);
}
pInfo = pInfo->NextEntryOffset ? (FILE_NOTIFY_INFORMATION*)((LPBYTE)pInfo + pInfo->NextEntryOffset) : NULL;
}
}
// 关闭监视器
CloseHandle(hDir);
return 0;
}
```
这个程序会监视指定目录下是否有新文件生成,并打印新文件的文件名。您可以将 `path` 变量修改为您需要监视的目录路径。请注意,这个程序是一个无限循环,需要手动结束才能停止监视。
阅读全文