初学者程序员....希望它有意义:))
我创建了一个控制台应用程序,我需要在后台运行并查看任何更改/重命名事件的目录。我使用了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给我,但理想情况下我希望将它复制到另一个文件夹
谢谢大家
答案 0 :(得分:1)
您可以使用string destination = Path.Combine(localDirectory, e.Name);
创建目标路径,File.Copy(e.FullPath, destination);
实际复制文件。
请注意,当您收到Changed
事件时,进程可能仍在写入文件,因此您可能会收到异常或复制半处理数据。如果文件已存在于本地目录中,您应该考虑如何处理(注意File.Copy(string, string, bool overwrite)
重载)。
另外,请确保检查更改的项目是文件而不是目录(例如,使用File.Exists(e.FullPath)
。