我搜索了SO但却一无所获.
为什么这不起作用?
Directory.Delete(@"E:\3\{90120000-001A-0000-0000-0000000FF1CE}-C");
Run Code Online (Sandbox Code Playgroud)
上面的行将抛出异常"访问被拒绝".我有管理员权限,我可以用资源管理器删除目录.
它看起来像一些禁止的字符?但Windows资源管理器可以处理它.如何删除名称相似的目录?
bin*_*all 24
谢谢大家的意见,它帮助我快速找到解决方案.
正如Phil提到"Directory.Delete失败,如果是,无论权限如何(参见msdn.microsoft.com/en-us/library/...的底部)"
此外,无法从文件夹中删除只读属性 Microsoft说:
您可能无法使用Windows资源管理器从文件夹中删除只读属性.此外,当您尝试将文件保存到文件夹时,某些程序可能会显示错误消息.
结论:在删除之前,始终删除所有dir,文件属性不同于Normal.所以下面的代码解决了问题:
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(@"E:\3\{90120000-0021-0000-0000-0000000FF1CE}-C1");
if (dir.Exists)
{
setAttributesNormal(dir);
dir.Delete(true);
}
. . .
function setAttributesNormal(DirectoryInfo dir) {
foreach (var subDir in dir.GetDirectories())
setAttributesNormal(subDir);
foreach (var file in dir.GetFiles())
{
file.Attributes = FileAttributes.Normal;
}
}
Run Code Online (Sandbox Code Playgroud)
我使用了binball的代码并添加了一行来将目录属性设置为normal.
if (dir.Exists)
{
setAttributesNormal(dir);
dir.Delete(true);
}
function setAttributesNormal(DirectoryInfo dir)
{
foreach (var subDir in dir.GetDirectories())
{
setAttributesNormal(subDir);
subDir.Attributes = FileAttributes.Normal;
}
foreach (var file in dir.GetFiles())
{
file.Attributes = FileAttributes.Normal;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21888 次 |
| 最近记录: |