拒绝访问路径被拒绝 - Winform C#

时间:2018-01-13 16:48:06

标签: c# .net winforms

我正在创建浏览器清洁软件,我正在尝试清除目录中的所有缓存文件

  

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);
    }
}

但是当我尝试执行这个程序时,正在努力解决这个问题 enter image description here

3 个答案:

答案 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){}