时间:2010-07-26 16:04:21

标签: c# .net filesystemwatcher

4 个答案:

答案 0 :(得分:35)

答案 1 :(得分:1)

只有在同一路径中可能存在具有相同名称的文件和目录时,您的问题才有意义。例如如果您有没有扩展名的文件名或带扩展名的目录。

如果您的目录和文件遵循通常的约定,只需检查完整路径(bool iSDirectory = Path.GetExtension(e.FullPath).Equals("");)中是否存在扩展,无论文件/目录是否存在,该扩展都有效,因为该方法只解析给出的路径并且与文件没有任何关系。

如果您必须处理我在开头提到的非传统问题,您可以检查该位置是否存在目录或文件。如果两者都没有,则将它们视为两者都被删除。如果其中一个确实存在,则将另一个视为已删除。

您的查询意味着您在某处保留了文件和目录的列表,因此,根据该列表进行检查,您可以做出有关处理的决定。

我认为这种方法比使用两个文件系统观察者的解决方案更好,以区别对待。

答案 2 :(得分:0)

答案 3 :(得分:0)

我最初暂时使用“路径”功能,但稍后如果没有删除,我会通过Directory.Exists修复它。 但是,这不能解决删除案例

bool isDirectory = Path.GetExtension(e.FullPath) == string.Empty;


if (e.ChangeType != WatcherChangeTypes.Deleted)
{
    isDirectory = Directory.Exists(e.FullPath);
}