FileSystemWatcher-同步更改的文件

本文关键字:文件 同步 FileSystemWatcher- | 更新日期: 2023-09-27 18:21:19

这里的初级程序员。。。。希望它有意义:)

我已经创建了一个控制台应用程序,我需要在后台运行它,并监视目录中的任何更改/重命名事件。我使用了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);

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

谢谢各位

FileSystemWatcher-同步更改的文件

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

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

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