Directory.Create返回误报

时间:2018-06-15 20:25:21

标签: c# io

我们有一个应用程序,有时会在Directory.Exist()Directory.CreateDirectory()上返回误报,并且会随机发生。

首先,该文件夹是测试计算机上的共享文件夹,具有所有人的完全权限,防火墙禁用且未安装防病毒。该计算机正在Windows Server 2008上运行,并且未安装任何软件。共享文件夹已禁用缓存以不允许脱机模式。在这种情况下,文件夹路径为\\TestComputer\data\

在我们的应用程序中:

// this in a loop with the 100-200 folders to create
CreateData(@"\\TestComputer\data\folder1\");


private void CreateData(string path)
{
    try
    {
        var dir = Directory.CreateDirectory(path);

        if(dir == null)
        {
            Console.WriteLine("path did not create properly");
        }
        else
        {
            if(Directory.Exist(path))
            {
                Console.WriteLine("path exist");

                CreateFiles(path);
            }
            else
            {
                Console.WriteLine("path does not exist");
            }
        }
    }
    catch(Exception ex)
    {
        Console.WriteLine("an error occured");
    }
}

现在的问题是我们有时会得到"路径存在"虽然文件夹未创建,因此不存在。那么这意味着Directory.CreateDirectory()确实返回一个非空对象,并且Directory.Exist()之上也返回true。这是一个错误的结果。

具有共享文件夹的服务器和使用该应用程序的PC都显示隐藏文件和系统文件,并且该文件夹不存在。我们知道,因为该示例代码之后的下一个方法将文件保存在该文件夹中,并且失败并显示该文件夹不存在的错误(这是真的)。​​

我们已经验证了服务器和运行上述代码的PC上的所有虚拟存储,文件夹完全是空的。

此代码可以运行数百个数百个文件夹(显然示例代码中的路径是一个实际参数更改),偶尔会告诉我文件夹已创建,它会说该文件夹存在,请参阅一个不存在的文件夹。

我们创建的所有文件夹只包含没有重音的标准字母,所以a到z和A到Z,数字和1或2破折号,所以没什么特别的。

0 个答案:

没有答案