![](/img/trans.png)
[英]Directory.Exists returns false when directory is present (works in a standalone console application but not in an ASP project)
[英]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.