奇怪的例外考虑这个简单的程序:文件访问和explorator窗口
private static void Main(string[] args)
{
var directoryName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Directory");
if (Directory.Exists(directoryName))
Directory.Delete(directoryName, true);
Directory.CreateDirectory(directoryName);
var stream = File.Create(Path.Combine(directoryName, "File")); //throws
stream.Close();
}
这工作得很好,而你只需执行这个程序。如果你在Windows资源管理器中浏览Directory
然后运行,会发生奇怪的事情。在这种情况下,我得到UnautorizedAccessException "Access to the path 'C:\Users\rfurman\AppData\Roaming\Directory\File' is denied."
如果这是奇怪的,然后用相同的条件下执行此:
private static void Main(string[] args)
{
var directoryName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Directory");
if (Directory.Exists(directoryName))
Directory.Delete(directoryName, true);
var value = Directory.Exists(directoryName);
Console.WriteLine(value);
Console.ReadKey();
}
这个程序打印True
如果Directory
在资源管理器中打开。
我想知道的是为什么发生这种情况以及如何防止这种情况。
我使用Windows 7和.NET 4
“如果你浏览该目录”是什么意思? – Luftwaffe
@Lufftwaffe:在Windows资源管理器中打开该文件夹 – Rafal
,这样你的意思是..该文件夹保持在资源管理器中打开..对吗? – Luftwaffe