首页 > 解决方案 > DirectoryInfo.Exists 即使在文件夹被删除后也返回 true

问题描述

我正在创建一个临时文件夹,其中有一个文件夹,位于用户在应用程序启动时选择的文件夹中。我创建了一个删除按钮,该按钮应在用户使用应用程序时删除其中创建的临时文件夹和文件。

我首先单击删除按钮并删除文件和文件夹,如果再次单击删除按钮,即使我作为参数输入的文件夹不再存在,DirectoryInfo.Exist 方法仍然返回 true,并且由于它是是的,我收到一个错误,因为它试图删除一个不存在的文件夹。

我很感谢任何帮助:)

C#

if (FilePaths.mainDirectory.Exists)
{
    if (DirectoryNotEmpty(FilePaths.mainDirectory.FullName))
    {
        if (DirectoryNotEmpty(FilePaths.actionDirectory.FullName))
        {
            foreach (var file in FilePaths.actionDirectory.GetFiles()) file.Delete();
        }
        Directory.Delete(FilePaths.actionDirectory.FullName);

        foreach (var file in FilePaths.mainDirectory.GetFiles()) file.Delete();
        Directory.Delete(FilePaths.mainDirectory.FullName);
    }
}

这是 DirectoryInfo 对象的实例化

public static string mainFolder = "";
public static string actionFolder = "";
public static DirectoryInfo mainDirectory;
public static DirectoryInfo actionDirectory;

public static void CreateTemporaryFolders()
{
    if (mainFolder != "")
    {
        actionFolder = Path.Combine(mainFolder, "Action Files");

        mainDirectory = new DirectoryInfo(mainFolder);
        actionDirectory = new DirectoryInfo(actionFolder);
    }
}

如果需要更多代码,请告诉我。

标签: c#

解决方案


DirectoryInfo主要是快照;对于现在的现实,请询问Directory.Exists(string),但请记住,任何磁盘检查本质上都是潜在的竞争条件(其他进程可能会在您检查后立即更改状态)。


推荐阅读