File.Exists()在FileSystemWatcher的Deleted事件中返回false
本文关键字:事件 Deleted 返回 false FileSystemWatcher Exists File | 更新日期: 2023-09-27 18:14:04
我遇到了一个问题。我有一个同步程序,我需要知道是否观看项目是一个文件或文件夹。问题是当我检查文件或文件夹是否存在时-无论如何,如果我检查文件,File.Exists
总是返回false:
private void onDelete(object o, FileSystemEventArgs e)
{
if (Directory.Exists(e.FullPath))
Directory.Delete(watched + e.Name, true);
if (File.Exists(e.FullPath))
File.Delete(e.FullPath);
}
有人知道问题在哪里吗?
您正在尝试查找onDelete
上的文件/文件夹,此方法将在文件/文件夹已删除时触发。所以你一定不要把这个文件放在文件夹里,因为它已经被删除了,不存在了。
FileSystemWatcher是一个通知系统,而不是钩子。
您不干预它触发的事件,因此当Deleted事件被触发时您不必自己删除文件:您在删除已经发生后接收到这样的事件。
正如Adil在他的回答中所说,你已经太迟了。但是,也许您可以通过文件名本身来区分这些项?如果你是唯一一个创建文件和文件夹的人,你可以建立一个惯例。例如,您可以使用文件扩展名,然后您可以轻松地从文件名(Path.GetExtension
)中获得该扩展名。
除此之外,您可能不得不保留目录中所有文件和文件夹的帐户,以确保它们是您想要的类型。