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 ;
        }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值