2016-02-05 189 views
0

嘿傢伙,所以我在一個程序上工作,它刪除了某些目錄文件,主要是臨時文件,除了我得到一個錯誤,甚至知道我添加了一個catch塊。 System.UnauthorizedAccessException。在捕捉IOException異常我到達那裏的錯誤:C#訪問路徑被拒絕

private void DeleteInternetFiles(string internetDirectory) 
{ 
    DirectoryInfo internetTempStorage = new DirectoryInfo(internetDirectory); 
    try 
    { 
     //this will delete files 
     foreach (FileInfo getNetFileInfo in internetTempStorage.GetFiles()) 
     { 
      getNetFileInfo.Delete(); 
     } 

     //this will loop through and delete folders 
     foreach (DirectoryInfo tempDirectoryInformation in internetTempStorage.GetDirectories()) 
     {   
      tempDirectoryInformation.Delete(); 
     } 
    } 

    //catch io exception and try delete file again 
    catch (IOException) 
    { 
     //delete file in this directory 
     File.Delete(internetDirectory); 

     //delete folders in this directory 
     Directory.Delete(internetDirectory); 
    } 

    //catch access exception and delete file again 
    catch (UnauthorizedAccessException) 
    { 
     //delete file in this directory 
     File.Delete(internetDirectory); 

     //delete folders in this directory 
     Directory.Delete(internetDirectory); 

    } 
} 

而下面這個人是我如何調用該方法:

if (checkBox1.Checked) 
{ 
    DeleteInternetFiles(@"C:\Users\" + Environment.UserName + @" \AppData\Local\Microsoft\Windows\Temporary Internet Files"); 
} 
+0

此外,DeleteInternetFiles方法中的參數稱爲字符串internetDirectory,某些原因無法發佈它。 – DialUp

+0

第二個catch塊只捕獲原始try中代碼中的UnauthorizedAccessException,而不是從第一個catch塊中獲取。 – BurningLights

回答

2

你的第二個電話到File.Delete(internetDirectory);,catch塊內,很可能是問題。該程序在嘗試刪除該文件時已經遇到錯誤,然後再次嘗試。有兩件事情可能會發生:

  1. 執行程序沒有在其他用戶的目錄權限設置爲 刪除文件的用戶帳戶。

  2. 某些文件仍然在使用,因此不能被刪除(如 在Internet Explorer中當前打開的。

你可能想研究C# - How to Delete temporary internet files響應。請注意有關可能具有的意見「殺IE」。

+0

沒有工作的鏈接:/我試過這個代碼相同的錯誤。 – DialUp

0

我看到這裏的問題是,你執行刪除操作需要Administrator特權。

你可以做的就是儘量右鍵>以管理員身份運行應用程序,然後執行操作。

如果你想提示用戶升高你的應用程序,你可以這樣做。

Force application to Run as Administrator [Winforms only]

+0

是否這樣,我右鍵單擊作爲管理員仍然同樣的錯誤運行。 – DialUp

+0

凹凸。只是碰撞這個職位。 – DialUp

0

你得到這個錯誤,因爲該文件或文件夾,嘗試刪除未正確此訪問。

由於在執行刪除操作時當前正在使用某個文件,因此可能會發生這種情況。

由於您從Windows操作系統臨時使用的文件夾中刪除文件,所以使用的文件可能性更大。