我有代码查找超过1小时的空目录并删除它们
foreach (DirectoryInfo __dir in _directories)
{
if (!__dir.EnumerateFiles().Any() && __dir.LastWriteTime < DateTime.Now.AddHours(-1))
{
Directory.Delete(__dir.FullName)
}
}
抛出异常,表示拒绝访问目录路径。但是,我可以通过文件浏览器手动删除同一目录 我尝试了其他人的建议(将属性设置为正常),但这不起作用。
我尝试FileAttributes.Normal;
和~FileAttributes.ReadOnly;
他们都没有工作。
我还尝试将访问控制设置为完全控制我正在尝试删除的目录以及它的父目录。
答案 0 :(得分:1)
如果上面发布的程序无法删除目录,但您可以手动进行权限问题,因为手动记录的是管理员,但应用程序未在管理员权限下运行:
答案 1 :(得分:0)
如果FileAttributes.Normal;
没有做到这一点(它应该),请尝试将属性设置为ReadOnly:
foreach (DirectoryInfo __dir in _directories)
{
if (!__dir.EnumerateFiles().Any() && __dir.LastWriteTime < DateTime.Now.AddHours(-1))
{
__dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;
__dir.Delete();
}
}
另请注意,这会使用__dir
来删除自己而不是Directory.Delete(__dir.FullName)
,它应该没有区别,只是简写。
答案 2 :(得分:0)
除了其他建议之外,如果您要删除的目录(例如:在目录中读取或写入文件),请确保您的程序没有“做某事”。 ...