如何监视某个目录,发现特定文件后就自动移动到其它目录中?用了filewatch后,可以监视到某个特定类型的文件,但是要用file.move去移动就报错。似乎不能直接用move来操作。举个例子:设置监控目录是:D:\A监视的文件类型是*.txt文件在该目录下如果发觉有txt文件就移动到D:\B目录下。大侠告诉下具体如何实现的,谢谢啦

解决方案 »

  1.   

    你使用System.IO.FileSystemWatcher 这个试试。我印象中是可以的。自己找找使用方法吧。
      

  2.   

    监视 用timer 定时去看文件夹里的列表.
    移动:
     public static void 查找和移动(String 原目录, string 目标目录, string 匹配符, string 过滤符)
            {
                if (匹配符.Trim() == "")
                {
                    匹配符 = "*";
                }
                if (过滤符.Trim() == "")
                {
                    过滤符 = "*";
                }
                var files = from file in Directory.EnumerateFiles(@原目录,
                        匹配符, SearchOption.AllDirectories)
                            select file;
                foreach (var f in files)
                {
                    String g = Path.GetFileName(f);
                    if (!g.Contains(过滤符))
                    {
                        File.Copy(f, @目标目录 + g, true);
                    }
                }
            }
      

  3.   


    private void FileMonitor_Changed(object sender, System.IO.FileSystemEventArgs e)
    {
    string ChangeType = e.ChangeType.ToString(); //display a message box for the appropriate changetype.
    if (ChangeType=="Created")
    {
    //MessageBox.Show("File: " +  e.FullPath + " " + e.ChangeType, e.Name+" Created");
    }
    else if(ChangeType=="Deleted")
    {
    //MessageBox.Show("File: " +  e.FullPath + " " + e.ChangeType, e.Name+" Deleted");
    }
    else if(ChangeType=="Changed")
    {
    //MessageBox.Show("File: " +  e.FullPath + " " + e.ChangeType, e.Name+" Changed");
                    File.Move (e.FullPath, "D:\\B");
    }

    }大家看看,当有文件放入D:\B目录后,会出发该事件,但是在运行File.Move (e.FullPath, "D:\\B");后程序就会报调用的目标发生了异常。