Jos*_*osh 7 c# filesystemwatcher
如果文件被创建,复制或移动到我正在观看的目录中,我正在尝试收到通知.我只希望收到有关文件的通知,而不是目录.
这是我目前的一些代码:
_watcher.NotifyFilter = NotifyFilters.FileName;
_watcher.Created += new FileSystemEventHandler(file_created);
_watcher.Changed += new FileSystemEventHandler(file_created);
_watcher.Renamed += new RenamedEventHandler(file_created);
_watcher.IncludeSubdirectories = true;
_watcher.EnableRaisingEvents = true;
Run Code Online (Sandbox Code Playgroud)
问题是,如果我移动一个包含文件的目录,我就不会收到该文件的任何事件.
如何通知我所有添加的文件(无论如何)到监视目录或它的子目录?
Incase我没有解释得足够好......我有WatchedDirectory和Directory1.Directory1包含Hello.txt.如果我将Directory1移动到WatchedDirectory,我希望收到Hello.txt的通知.
编辑:我应该注意我的操作系统是Windows 8.而且我确实收到了复制/粘贴事件的通知,但没有移动事件(拖放到文件夹中).
也许这个解决方法会派上用场(但我会小心性能,因为它涉及递归):
private static void file_created(object sender, FileSystemEventArgs e)
{
if (e.ChangeType == WatcherChangeTypes.Created)
{
if (Directory.Exists(e.FullPath))
{
foreach (string file in Directory.GetFiles(e.FullPath))
{
var eventArgs = new FileSystemEventArgs(
WatcherChangeTypes.Created,
Path.GetDirectoryName(file),
Path.GetFileName(file));
file_created(sender, eventArgs);
}
}
else
{
Console.WriteLine("{0} created.",e.FullPath);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9056 次 |
| 最近记录: |