【问题标题】:FileSystemWatcher - sync changed filesFileSystemWatcher - 同步更改的文件
【发布时间】:2012-01-25 23:35:37
【问题描述】:

这里的初学者程序员....希望它有意义:)

我创建了一个控制台应用程序,我需要在后台运行它并监视目录中的任何更改/重命名事件。我使用了 FileWatcher 类并添加了事件处理程序:

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

然后像下面这样定义处理程序:

private static void OnChanged(object source, FileSystemEventArgs e)
{
    //specify what is done when a file is changed, created or deleted
    Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
    //specify what is done when a file is renamed 
    Console.WriteLine("File {0} renamed to {1}", e.OldFullPath, e.FullPath);

我希望能够添加一些代码,将任何已更改/重命名的文件转储到另一个本地目录,但我不知道从哪里开始。此刻控制台正在将完整路径写回给我,但理想情况下我希望它将其复制到另一个文件夹中

谢谢大家

【问题讨论】:

    标签: c# filesystemwatcher


    【解决方案1】:

    您可以使用string destination = Path.Combine(localDirectory, e.Name); 创建目标路径,File.Copy(e.FullPath, destination); 实际复制文件。

    请注意,当您收到Changed 事件时,进程可能仍在写入文件,因此您可能会收到异常或复制半处理数据。此外,您还应该考虑如果该文件已存在于您的本地目录中该怎么办(注意File.Copy(string, string, bool overwrite) 重载)。

    还要确保检查更改的项目是否是文件而不是目录(例如,使用File.Exists(e.FullPath)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多