监控文件夹,却无法检测到在文件夹中新创建的文件
时间: 2024-03-23 21:38:34 浏览: 92
您好,针对您提出的问题,我可以给您提供以下信息和建议。
在Windows操作系统中,监控文件夹并不能直接检测到新创建的文件。这是因为文件夹监控器(如FileSystemWatcher)只能检测到文件夹中的文件或文件夹的更改,而不是文件夹中新增加的文件。
为了解决这个问题,您可以考虑使用Windows API中的FindFirstChangeNotification函数来监控文件夹中新增加的文件。该函数可以监控特定的文件夹,并在该文件夹中创建新文件时发出通知。
以下是一个使用FindFirstChangeNotification函数的示例代码:
```
#include <Windows.h>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
HANDLE hFile;
DWORD dwWaitStatus;
hFile = FindFirstChangeNotification("C:\\FolderToWatch", FALSE, FILE_NOTIFY_CHANGE_FILE_NAME);
if (hFile == INVALID_HANDLE_VALUE)
{
cout << "Error: " << GetLastError() << endl;
return 1;
}
while (true)
{
dwWaitStatus = WaitForSingleObject(hFile, INFINITE);
if (dwWaitStatus == WAIT_OBJECT_0)
{
cout << "New file created!" << endl;
if (FindNextChangeNotification(hFile) == FALSE)
{
cout << "Error: " << GetLastError() << endl;
FindCloseChangeNotification(hFile);
return 1;
}
}
else
{
cout << "Error: " << GetLastError() << endl;
FindCloseChangeNotification(hFile);
return 1;
}
}
FindCloseChangeNotification(hFile);
return 0;
}
```
该代码可以监控"C:\\FolderToWatch"文件夹,并在该文件夹中创建新文件时发出通知。
希望这些信息可以对您有所帮助。如果您有任何其他问题或需要进一步的帮助,请随时问我。
阅读全文