【发布时间】:2011-09-27 04:20:28
【问题描述】:
我有一个包含多个 word 文档的文件夹。我需要监视此文件夹以了解这些 Word 文档中的任何更改。我面临以下问题:
-
FileSystemWatcher从不报告正在更改的文件的确切名称。例如,对于文件 abc.doc,它会在第一次保存时报告“~$abc.doc is changed”。 - 对于该文件的所有后续保存,不会调用以下代码中的
OnChanged事件。当我将过滤器更改为watcher.Filter = "*.*"时,我发现对于后续保存,它会报告“~WRL0001.tmp is changed”。
所以底线是我永远不知道更改文件的确切名称。
我正在使用以下代码
public static void Main()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"C:\Users\Administrator\Documents\"; //"
watcher.NotifyFilter = NotifyFilters.Size;
watcher.Filter = "*.doc";
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
Console.WriteLine("Press \'q\' to quit the sample.");
while (Console.Read() != 'q') ;
}
private static void OnChanged(object source, FileSystemEventArgs e)
{
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
【问题讨论】:
-
Win7/Vista 上的 FSW 似乎有点无聊,因为我一直无法让它正常工作:\ 无论如何,我所做的是文件名的 HashMap 以更改日期并扫描目录一次过一会儿,检查一切。我尝试了 C++ ReadDirectoryChanges 和同样的问题....
-
@Leon 这个链接太糟糕了...我首先必须使用 Microsoft 帐户登录,当我这样做时(可能是错误的类型,因为它不是开发人员帐户)我被微软告知没有找到该网站。能否请您提供另一个链接?
标签: c# .net vb.net filesystems filesystemwatcher