繁体   English   中英

当目录不存在时,Directory.Exists返回true

[英]Directory.Exists returns true when directory is not present

我正在开发一个Windows 7应用程序,并运行一些例程目录创建代码:

string dirPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MyDir");    
if (!Directory.Exists(dirPath))
   Directory.CreateDirectory(dirPath);

问题是,当我无法通过命令行和Windows资源管理器查看目录时,Directory.Exists行返回true。 使用Windows XP时,这不是问题。 Windows 7是否有一些我不知道的事情?

编辑:添加了Path.Combine

请理解Windows Vista和Windows 7使用虚拟化来保护这些文件夹,因此您需要检查myDir是否在虚拟存储中,

C:\\ Users(用户名)\\ AppData \\ Local \\ VirtualStore \\ ProgramData

我不知道为什么Windows 7会这样做,而且我没有要测试的副本,但是您对Directory.Exists(路径)的检查不是必需的。 如果您(深入)反映到Directory.CreateDirectory(路径)中,您会发现它在内部检查以查看该目录是否已存在,并且在已存在的目录上多次调用它不是问题。 对Directory.Exists(路径)的调用是无关紧要且不必要的。

当然,如果Windows 7没有按照我期望的方式执行Directory.Exists,也许它不会执行裸Directory.CreateDirectory。 无论如何,它值得测试。

CommonApplicationData通常解析为Windows 7上的<OSDrive>\\ProgramData 。这是一个隐藏文件夹。 如果您不要求资源管理器显示隐藏的文件和文件夹(从文件夹选项 - >查看用户界面),您将无法在资源管理器中看到它。

编辑 :确保您在资源管理器中查看正确的目录:浏览到%PROGRAMDATA% ,而不是C:\\ ProgramData。

暂无
暂无

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

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