繁体   English   中英

File.Exists()在FileSystemWatcher的Deleted事件中返回false

[英]File.Exists() returns false in Deleted event of FileSystemWatcher

我陷入一个问题。 我有一个同步程序,我需要知道监视项是文件还是文件夹。 问题是当我检查文件或文件夹是否存在时-无论如何,如果我正在检查文件,则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 )中轻松获取该文件扩展名。

除此之外,您可能不得不考虑保留目录中的所有文件和文件夹,以确保它们是您想要的类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM