Deleted -- 文件或文件夹的删除。
Renamed -- 文件或文件夹的重命名。
private delegate void setLogTextDelegate(FileSystemEventArgs e); //声明传递FileSystemEventArgs对象的委托,用于文件Created,Deleted和Changed变动时更新UI界面。
private delegate void renamedDelegate(RenamedEventArgs e); //声明传递RenamedEventArgs对象的委托,用于文件Renamed时更新UI界面。
FileSystemWatcher fsw= new FileSystemWatcher();
fsw.Path = “C:\”; //设置监控的文件目录
fsw.IncludeSubdirectories = true; //设置监控C盘目录下的所有子目录
fsw.Filter = "*.txt|*.doc|*.jpg"; //设置监控文件的类型
fsw.NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.Size; //设置文件的文件名、目录名及文件的大小改动会触发Changed事件
fsw.Created += new FileSystemEventHandler(this.fileSystemWatcher_EventHandle); //绑定事件触发后处理数据的方法。
fsw.Deleted += new FileSystemEventHandler(this.fileSystemWatcher_EventHandle);
fsw.Changed += new FileSystemEventHandler(this.fileSystemWatcher_EventHandle);
fsw.Renamed += new RenamedEventHandler(this.fileSystemWatcher_Renamed); //重命名事件与增删改传递的参数不一样。
fsw.EnableRaisingEvents = true; //启动监控
private void fileSystemWatcher_EventHandle(object sender, FileSystemEventArgs e) //文件增删改时被调用的处理方法
{
if (this.listView1.InvokeRequired) //判断是否跨线程
{
this.listView1.Invoke(new setLogTextDelegate(setLogText), new object[] { e }); //使用委托将方法封送到UI主线程处理
}
}
private void fileSystemWatcher_Renamed(object sender,RenamedEventArgs e) //文件重命名时被调用的处理方法
{
if (this.listView1.InvokeRequired) //判断是否跨线程
{
this.listView1.Invoke(new renamedDelegate(setRenamedLogText), new object[] { e }); //使用委托将方法封送到UI主线程处理
}
}
private void setLogText(FileSystemEventArgs e) //更新UI界面
{
ListViewItem lvi = new ListViewItem();
lvi.SubItems.Add(e.Name); //受影响的文件名
lvi.SubItems.Add(e.ChangeType.ToString()); //受影响文件的变动类型(可能为Created、Changed、Deleted)
lvi.SubItems.Add(e.FullPath); //受影响的文件完整路径
this.listView1.Items.Add(lvi);
}
private void setRenamedLogText(RenamedEventArgs e) //更新UI界面