У меня есть папка, содержащая несколько документов Word. Мне нужно следить за этой папкой на предмет любых изменений в этих текстовых документах. Я сталкиваюсь со следующими проблемами:
FileSystemWatcherникогда не сообщает точное имя изменяемого файла. Например, для файла abc.doc он сообщает «~$abc.doc изменен» при первом сохранении.- При всех последующих сохранениях в этот файл событие
OnChangedв следующем коде не вызывается. Когда я изменил фильтр наwatcher.Filter = "*.*", я обнаружил, что при последующих сохранениях он сообщает: «~WRL0001.tmp изменен».
Итак, суть в том, что я никогда не узнаю точное имя измененного файла.
Я использую следующий код
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);
}
