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,但理想情况下,我希望它将其复制到另一个文件夹中
谢谢各位
您可以使用string destination = Path.Combine(localDirectory, e.Name);
创建目标路径,File.Copy(e.FullPath, destination);
实际复制文件。
请注意,当您获得Changed
事件时,进程可能仍在写入文件,因此您可能会获得异常或复制半处理的数据。此外,您还应该考虑如果文件已经存在于本地目录中该怎么办(注意File.Copy(string, string, bool overwrite)
重载)。
还要确保检查更改的项是否是文件而不是目录(例如,使用File.Exists(e.FullPath)
.