none
用fileSystemWatcher监控某目录Created了新文件,如何拷贝这个新创建的文件到指定目录? RRS feed

  • 问题

  • 用fileSystemWatcher监控某目录Created了新文件,如何拷贝这个新创建的文件到指定目录?这个新文件的扩展名只有可能是这几种.URP,.EMO,.EMP,fileSystemWatcher的filter的属性也做了相应设置。在这里请教了,谢谢!
    Yang
    2011年5月18日 12:07

答案

  • 你好

    基本步骤就是1:创建一个FileSystemWatcher对象。注册一下他的created事件。

    watcher.Created += new FileSystemEventHandler(OnChanged);

    2:获取新创建文件的目录

    string targetPath=“d:\\”

    string sourcePath=string.Empty;

    private void OnChanged(object source, FileSystemEventArgs e)
        {
            sourcePath=e.FullPath;

       }

    3. 把文件从源目录复制到目标目录。

    File.Copy(sourcePath,targetPath);

    除此之外,像filter的属性等等也应该做一些设定。详细例子可以参考msdn。

    如果是多个文件的话,最好是用一个集合把路径存储起来,然后循环拷贝过去。

    希望对你有帮助。


    Cookie Luo[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 zjyh16 2011年5月20日 8:57
    2011年5月20日 3:40

全部回复

  • File.Copy( "FilePathNameFrom" , "FilePathNameTo");

    如果你只是知道文件名字,而不太清楚扩展名的话. 可以利用文件名和可能的扩展名拼出所有的文件名,

    然后再用 File.Exist("FilePathName")逐一判断这些可能的名字中那些文件真正存在.


    信奎爷,无所畏惧!!
    2011年5月19日 1:37
  • dear

    MSDN裡有詳細的資源,http://msdn.microsoft.com/zh-cn/library/system.io.filesystemwatcher%28VS.80%29.aspx

    基本上就是用以下這些事件監看檔案的變化

     

        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);
    

     

    FileSystemEventArgs 就是用來通知你,有哪些檔案發生事件了

        void watcher_Deleted(object sender, FileSystemEventArgs e)
        {
          MessageBox.Show(e.FullPath);
        }
    


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年5月19日 2:41
  • File.Copy( "FilePathNameFrom" , "FilePathNameTo");

    如果你只是知道文件名字,而不太清楚扩展名的话. 可以利用文件名和可能的扩展名拼出所有的文件名,

    然后再用 File.Exist("FilePathName")逐一判断这些可能的名字中那些文件真正存在.


    信奎爷,无所畏惧!!
    已知扩展名,我的问题是关键如何复制这些文件。
    Yang
    2011年5月20日 2:41
  • dear

    MSDN裡有詳細的資源,http://msdn.microsoft.com/zh-cn/library/system.io.filesystemwatcher%28VS.80%29.aspx

    基本上就是用以下這些事件監看檔案的變化

     

      watcher.Changed += new FileSystemEventHandler(OnChanged);
      watcher.Created += new FileSystemEventHandler(OnChanged);
      watcher.Deleted += new FileSystemEventHandler(OnChanged);
      watcher.Renamed += new RenamedEventHandler(OnRenamed);
    

     

    FileSystemEventArgs 就是用來通知你,有哪些檔案發生事件了

      void watcher_Deleted(object sender, FileSystemEventArgs e)
      {
       MessageBox.Show(e.FullPath);
      }
    


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    我的问题是关键在于如何复制那些新建的文件,不是filesystemwatcher的事件的问题。
    Yang
    2011年5月20日 2:44
  • File.Copy( "FilePathNameFrom" , "FilePathNameTo"); 这个命令就是用来拷贝文件的呀. 第一个参数是源文件地址, 第二个参数是目标地址. 跟用Dos命令一样简单了

    我不太明白你还要怎样? 如果是多个文件名,你只需要 foreach(string crrFile in Files) 即可循环执行拷贝所在files文件名列表中的文件了.


    信奎爷,无所畏惧!!
    2011年5月20日 2:56
  • 你好

    基本步骤就是1:创建一个FileSystemWatcher对象。注册一下他的created事件。

    watcher.Created += new FileSystemEventHandler(OnChanged);

    2:获取新创建文件的目录

    string targetPath=“d:\\”

    string sourcePath=string.Empty;

    private void OnChanged(object source, FileSystemEventArgs e)
        {
            sourcePath=e.FullPath;

       }

    3. 把文件从源目录复制到目标目录。

    File.Copy(sourcePath,targetPath);

    除此之外,像filter的属性等等也应该做一些设定。详细例子可以参考msdn。

    如果是多个文件的话,最好是用一个集合把路径存储起来,然后循环拷贝过去。

    希望对你有帮助。


    Cookie Luo[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 zjyh16 2011年5月20日 8:57
    2011年5月20日 3:40
  • 感谢版主的回答,比较详细,也清楚。研究研究去,看结果如何。谢谢。
    Yang
    2011年5月20日 8:58
  • 我的问题是关键在于如何复制那些新建的文件,不是filesystemwatcher的事件的问题。
    Yang

    dear

    如果你能試著動手做,你會知道你要的動作是事件觸發而已


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年5月20日 9:14