天天看點

C# FileSystemWatcher

using  System.IO;

// file system watcher object. 
         private  FileSystemWatcher watcher;
         private   delegate   void  UpdateWatchTextDelegate( string  newText);

         public   void  UpdateWatchText( string  newText)
        {
            lblWatch.Text  =  newText;
        }

         public  Form1()
        {
            InitializeComponent();

             this .watcher  =   new  FileSystemWatcher();
             this .watcher.Deleted  +=   new  FileSystemEventHandler(watcher_Deleted);
             this .watcher.Renamed  +=   new  RenamedEventHandler(watcher_Renamed);
             this .watcher.Changed  +=   new  FileSystemEventHandler(watcher_Changed);
             this .watcher.Created  +=   new  FileSystemEventHandler(watcher_Created);
        }

         void  watcher_Created( object  sender, FileSystemEventArgs e)
        {
             // throw new NotImplementedException(); 
             try 
            {
                StreamWriter sw  =   new  StreamWriter( " c://Log.txt " ,  true );
                sw.WriteLine( " File: {0} Created " , e.FullPath);
                sw.Close();
                 this .BeginInvoke( new  UpdateWatchTextDelegate(UpdateWatchText),  " Wrote create event to log " );
            }
             catch  (IOException)
            {
                 this .BeginInvoke( new  UpdateWatchTextDelegate(UpdateWatchText),  " Error Writing to log " );
            }
        }

         void  watcher_Changed( object  sender, FileSystemEventArgs e)
        {
             // throw new NotImplementedException(); 
             try 
            {
                StreamWriter sw  =   new  StreamWriter( " c://Log.txt " ,  true );
                sw.WriteLine( " File: {0} {1} " , e.FullPath, e.ChangeType.ToString());
                sw.Close();
                 this .BeginInvoke( new  UpdateWatchTextDelegate(UpdateWatchText),  " Wrote change event to log " );
            }
             catch  (IOException)
            {
                 this .BeginInvoke( new  UpdateWatchTextDelegate(UpdateWatchText),  " Error Writing to log " );
            }
        }

         void  watcher_Renamed( object  sender, RenamedEventArgs e)
        {
             // throw new NotImplementedException(); 
             try 
            {
                StreamWriter sw  =   new  StreamWriter( " c://Log.txt " ,  true );
                sw.WriteLine( " File renamed from {0} to {1} " , e.OldName, e.FullPath);
                sw.Close();
                 this .BeginInvoke( new  UpdateWatchTextDelegate(UpdateWatchText),  " Wrote renamed event to log " );
            }
             catch (IOException)
            {
                 this .BeginInvoke( new  UpdateWatchTextDelegate(UpdateWatchText),  " Error Writing to log " );
            }
        }

         void  watcher_Deleted( object  sender, FileSystemEventArgs e)
        {
             // throw new NotImplementedException(); 
             try 
            {
                StreamWriter sw  =   new  StreamWriter( " c://Log.txt " ,  true );
                sw.WriteLine( " File: {0} Deleted " , e.FullPath);
                sw.Close();
                 this .BeginInvoke( new  UpdateWatchTextDelegate(UpdateWatchText),  " Wrote delete event to log " );
            }
             catch  (IOException)
            {
                 this .BeginInvoke( new  UpdateWatchTextDelegate(UpdateWatchText),  " Error Writing to log " );
            }
        }

         private   void  cmdBrowse_Click( object  sender, EventArgs e)
        {
             if  (FileDialog.ShowDialog()  !=  DialogResult.Cancel)
            {
                txtLocation.Text  =  FileDialog.FileName;
                cmdWatch.Enabled  =   true ;
            }
        }

         private   void  cmdWatch_Click( object  sender, EventArgs e)
        {
            watcher.Path  =  Path.GetDirectoryName(txtLocation.Text); // 監控路徑(檔案夾) 
            watcher.Filter  =   " *.* "  ; // 如果filter為檔案名稱則表示監控該檔案,如果為*.txt則表示要監控指定目錄當中的所有.txt檔案 
            watcher.NotifyFilter  =  NotifyFilters.LastWrite  | 
                NotifyFilters.FileName  | 
                NotifyFilters.Size;
            lblWatch.Text  =   " Watching  "   +  txtLocation.Text;

             // begin watching. 
            watcher.EnableRaisingEvents  =   true ;
        }
 
      

繼續閱讀