我陷入了困境。我有一个同步程序,我需要知道观看的项目是文件还是文件夹。问题是当我检查文件或文件夹时 - 无论如何,如果我检查文件,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);
}
任何人都可以看到问题出在哪里?
答案 0 :(得分:5)
您正试图在onDelete
上找到文件/文件夹,当文件/文件夹已被删除时,将触发此方法。因此,您不能在文件夹上获取该文件,因为它已被删除且不存在。
答案 1 :(得分:0)
FileSystemWatcher是一个通知系统,而不是一个钩子。
您不会干预它触发的事件,因此您不必在发生Deleted事件时自行删除文件:在删除已经发生之后,您会收到事件。
答案 2 :(得分:0)
正如阿迪尔在答案中所说,你已经太晚了。但是,也许您可以通过文件名本身来区分项目?如果您是唯一一个创建文件和文件夹的人,那么您可以建立一个约定。例如,您可以使用文件扩展名,然后可以从文件名(Path.GetExtension
)轻松获取。
除此之外,您可能不得不记录目录中的所有文件和文件夹,以确保它们是您想要的类型。