Lia*_*iam 32 windows directory monitoring
当在Windows系统上的目录中进行更改时,我需要立即通知程序更改.
发生变化时是否有某种方式执行程序?
我不是C/C++/.NET程序员,所以如果我可以设置一些东西,以便更改可以触发批处理文件,那么这将是理想的.
Ref*_*din 25
使用如下所示的FileSystemWatcher创建WatcherCreated Event().我使用它来创建一个Windows服务,它监视一个Network文件夹,然后在新文件到达时通过电子邮件发送指定的组.
// Declare a new FILESYSTEMWATCHER
protected FileSystemWatcher watcher;
string pathToFolder = @"YourDesired Path Here";
// Initialize the New FILESYSTEMWATCHER
watcher = new FileSystemWatcher {Path = pathToFolder, IncludeSubdirectories = true, Filter = "*.*"};
watcher.EnableRaisingEvents = true;
watcher.Created += new FileSystemEventHandler(WatcherCreated);
void WatcherCreated(object source , FileSystemEventArgs e)
{
//Code goes here for when a new file is detected
}
Run Code Online (Sandbox Code Playgroud)
FileSystemWatcher是正确的答案,除了它曾经是FileSystemWatcher一次仅用于"少数"更改.那是因为操作系统缓冲区.实际上,每当复制许多小文件时,保存更改的文件的文件名的缓冲区就会溢出.这个缓冲区实际上并不是跟踪最近更改的正确方法,因为当缓冲区已满时,操作系统必须停止写入以防止超出.
相反,Microsoft提供其他工具(编辑:如更改日记)以真正捕获所有更改.这基本上是备份系统使用的设施,并且在记录的事件上很复杂.而且记录也很少.
一个简单的测试是生成大量的小文件,看看它们是否都由FileSystemWatcher报告.如果您遇到问题,我建议回避整个问题,并按时间间隔扫描文件系统中的更改.
归档时间: |
|
查看次数: |
56346 次 |
最近记录: |