日期:2014-05-18  浏览次数:20826 次

FileSystemWatcher.Deleted事件触发后,能不能获取被删除的文件类型?
public static void OnChanged(object sender, FileSystemEventArgs e)
  {
  //指定当文件被更改、创建或删除时要做的事
  Console.WriteLine("file:" + e.FullPath + "__" + e.ChangeType+"___"+e.GetType());
  if (e.ChangeType == WatcherChangeTypes.Deleted)
  {

  }
  }

if里面就不会写了,不知道怎么获取被删除的文件类型,因为如果删除的是文件夹的话,我必须要做出不同的处理,求大神指教!怎么获取到被删除的是不是文件夹!

------解决方案--------------------
C# code
public static void OnChanged(object sender, FileSystemEventArgs e)
{
    //指定当文件被更改、创建或删除时要做的事
    Console.WriteLine("file:" + e.FullPath + "__" + e.ChangeType + "___" + e.GetType());
    if (e.ChangeType == WatcherChangeTypes.Deleted)
    {
        string ext = Path.GetExtension(e.Name);
        // 获取文件的扩展名,这就是文件的类型,然后进一步处理
    }
}

------解决方案--------------------
好像没有什么好办法,我的做法是开两个FileSystemWatcher,一个的NotifyFilter指定FileName,另一个指定DirectoryName。两个FileSystemWatcher的Deleted添加不同的事件。这样能解决对文件与文件夹的Delete执行不同操作的问题。但是这样如果Path所指示的文件夹引发Change事件的话会产生两次,不过这对我没影响,因为我只想监控其里面的文件系统的变化。