代码
这是我正在调试的一些C#代码的简化伪代码版本。
// 1) Lots of files and directories are copied
// 2) Some unnecessary files are deleted
// 3) Try to delete an unnecessary directory
string stubbornFolder = @"C:\...\Stubborn"; // This folder was created during step 1 above.
Directory.Delete(stubbornFolder);
问题
当它命中Directory.Delete时,抛出以下异常。
System.IO.IOException: Access to the path 'C:\...\Stubborn' is denied.
备注
删除目录" C:... \ test"也按预期工作。 test和Stubborn似乎都具有相同的安全设置。两个目录都是空的。
如果我手动删除然后使用Windows资源管理器重新创建Stubborn(并使用调试器跳过复制代码),删除将按预期工作。
查看this question中建议的访问控制类型似乎表明所有规则都设置为允许。
不必要的文件删除按预期工作。
以管理员而不是管理员身份运行可执行文件并没有任何区别。
似乎没有任何使用Stubborn
作为工作目录的应用程序。
帮助!
关于可能导致此问题的任何想法?
答案 0 :(得分:0)
可能存在某种属性阻止您删除该文件夹。您可以尝试首先将属性设置为正常:
System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(@"C:\...\Stubborn");
setAttributesNormal(directory);
void setAttributesNormal(System.IO.DirectoryInfo directory){
foreach (string subDirectoryPath in directory.GetDirectories()){
var directoryInfo = new DirectoryInfo(subDirectoryPath);
foreach (string filePath in directoryInfo.GetFiles()) {
var file = new FileInfo(filePath);
file.Attributes = FileAttributes.Normal;
}
}
}