.NET filesystemwatcher - was it a file or a directory?

后端 未结 4 2045
北恋
北恋 2020-12-05 13:15

Is there a way to determine with the FSW if a file or a directory has been deleted?

4条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-05 14:06

    Here's a simplified and corrected version of fletcher's solution:

    namespace Watcher
    {
        class Program
        {
            private const string Directory = @"C:\Temp";
            private static FileSystemWatcher _fileWatcher;
            private static FileSystemWatcher _dirWatcher;
    
            static void Main(string[] args)
            {
                 _fileWatcher = new FileSystemWatcher(Directory);
                 _fileWatcher.IncludeSubdirectories = true;
                 _fileWatcher.NotifyFilter = NotifyFilters.FileName;
                 _fileWatcher.EnableRaisingEvents = true;
                 _fileWatcher.Deleted += WatcherActivity;
    
                _dirWatcher = new FileSystemWatcher(Directory);
                _dirWatcher.IncludeSubdirectories = true;
                _dirWatcher.NotifyFilter = NotifyFilters.DirectoryName;
                _dirWatcher.EnableRaisingEvents = true;
                _dirWatcher.Deleted += WatcherActivity;
    
                Console.ReadLine();
            }
    
            static void WatcherActivity(object sender, FileSystemEventArgs e)
            {
                if(sender == _dirWatcher)
                {
                    Console.WriteLine("Directory:{0}",e.FullPath);
                }
                else
                {
                    Console.WriteLine("File:{0}",e.FullPath);
                }
            }
        }
    }
    

提交回复
热议问题