我正在创建浏览器清洁软件,我正在尝试清除目录中的所有缓存文件
C:\ Users \ RamRo \ AppData \ Local \ Google \ Chrome \ User Data \ Default \ Cache
我正在使用此代码删除文件,但试图删除此
private void button3_Click(object sender, EventArgs e)
{
System.IO.DirectoryInfo di = new DirectoryInfo(@"C:\Users\RamRo\AppData\Local\Google\Chrome\User Data\Default\Cache");
foreach (FileInfo file in di.GetFiles())
{
file.Delete();
}
foreach (DirectoryInfo dir in di.GetDirectories())
{
dir.Delete(true);
}
}
答案 0 :(得分:2)
嗯,几乎可以肯定答案是该文件正在使用中。毕竟使用缓存!关于删除文件夹,如果文件夹包含任何文件或子文件夹,则会失败。
执行此任务的任何代码都必须处理潜在的错误,并且应该慷慨地处理尝试删除此类文件的任何错误。您应该阅读try...catch
。
答案 1 :(得分:1)
对于以前的两个答案,您的代码应该看起来像这样:
private void button3_Click(object sender, EventArgs e)
{
System.IO.DirectoryInfo di = new DirectoryInfo(@"C:\Users\RamRo\AppData\Local\Google\Chrome\User Data\Default\Cache");
List<FileSystemInfo> notDeletable = new List<FileSystemInfo>();
foreach (FileInfo file in di.GetFiles())
{
try
{
file.Delete();
}
catch (Exception ex)
{
notDeletable.Add(file);
}
}
foreach (DirectoryInfo dir in di.GetDirectories())
{
try
{
dir.Delete(true);
}
catch (Exception ex)
{
notDeletable.Add(dir);
}
}
// Process 'notDeletable' List
}
也许你甚至应该使目录部分递归......
答案 2 :(得分:-1)
请改为:
try
{
file.Delete();
}
catch(Exception){}