我正在开发一个程序,该程序应该删除缓存。唯一的问题是缓存中的所有文件都没有扩展名,并且总是在我尝试删除这些文件时出现异常:The access to the path 'path' was denied.
所以我不知道为什么会发生此错误,因为我正在尝试删除一个文件而不是一个目录。我认为由于缺少扩展名,它无法将该文件识别为文件。我已经尝试过:
DirectoryInfo cache = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Cache");
Console.WriteLine("Deleting Cache...");
foreach (var fi in cache.GetFiles())
{
File.Delete(cache + @"\" + fi.Name);
Console.WriteLine(cache + @"\" + fi.Name);
}
Console.ReadKey();
我还能尝试什么?
答案 0 :(得分:5)
您的文件似乎仍处于打开状态,因此您无法删除它。但是,我原来的答案仍然适用:
既然你已经有了一个 DirectoryInfo
,你不需要连接字符串来获取文件名,只需使用 FileInfo.Delete
:
foreach (var fi in cache.GetFiles())
{
fi.Delete();
}
无论如何你都应该避免连接字符串来构建路径,使用Path.Combine
:
DirectoryInfo cache = new DirectoryInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Cache"));