c# - Directory.Create 返回误报
问题描述
我们有一个应用程序有时会在两者上都返回误报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 破折号,所以没什么特别的。
解决方案
推荐阅读
- gradle - groovy 编译器对 gradle 依赖语法做了什么
- html - 如何通过 ruby 表单显示 html 代码
- python - 如何使用两个单独的数据框在 Pandas 中执行 SumProduct()
- php - 如何使用按钮单击将第 1 页上的代码 $ _GET 自动复制到第 2 页
- javascript - 如何更改在线网站上画布的像素,以便其他人可以看到更改
- ruby-on-rails - 如何将参数传递给rails中的两个不同的表
- html - 可以在里面预加载资源
- javascript - Express App GET Routing not working in Production Environment
- unity3d - unity3d error. Decompressing this format (30) is not supported on this platform
- python-3.x - Webscraping a site with a 'Load More' button