2016-02-04 154 views
0

嘿傢伙,所以我正在一個小程序,它加速了你的電腦,但我有一個問題,如果我試圖刪除文件,我相信他們正在使用中,我得到一個異常。儘管它刪除了一些,但並不多。我的問題是如何使用的刪除文件,以及如何刪除該文件夾刪除文件夾內的所有文件夾?

//this is my directory: 

DirectoryInfo tempPath = new DirectoryInfo(@"C:\Users\" + Environment.UserName + @"\AppData\Local\Temp"); 

private void button8_Click(object sender, EventArgs e) 
{   
    if (checkBox5.Checked) 
    { 
     //loop through these files 
     foreach (FileInfo file in tempPath.GetFiles()) 
     { 
      //delete files in content 
      file.Delete(); 
     } 
    } 
} 
+0

贊成,舊的「加快您的PC刪去」招...有在檢查後,如果一個文件被鎖定在這裏:HTTP: //stackoverflow.com/questions/1304/how-to-check-for-file-lock。然而,刪除鎖定的文件是一種完全不同的動物。 – axlj

+0

[如何刪除目錄中的所有文件和文件夾?](http://stackoverflow.com/questions/1288718/how-to-delete-all-files-and-folders-in-a-directory) –

+0

MoveFileEx延遲,直到重新啓動 – MickyD

回答

0

必須使用一套FileAttributes正常recursivly刪除文件夾內的子文件。

private static void DeleteAllFolderRecursive(DirectoryInfo yourBaseDir) 
{ 
    baseDir.Attributes = FileAttributes.Normal; 
    foreach (var childDir in baseDir.GetDirectories()) 
     DeleteFolderRecursive(childDir); 

    foreach (var file in baseDir.GetFiles()) 
     file.IsReadOnly = false; 

    baseDir.Delete(true); 
} 

你把這個:

DirectoryInfo tempPath = new DirectoryInfo(@"C:\Users\" + Environment.UserName + @"\AppData\Local\Temp"); 
DeleteAllFolderRecursive(tempPath); 
+0

感謝您的幫助。 Shree這個人混淆了什麼是基礎?甚至不存在。 – DialUp

+0

編輯我有一個編程問題,爲什麼在我們製作的方法中添加參數時,我們可以在方法下方輸入它?因爲當我們調用該方法時,我們不打算使用該參數。我們正在使用tempPath之一。 – DialUp

+0

還添加了這個和我得到錯誤catch(IOException) { Directory.Delete(tempPath); } catch(UnauthorizedAccessException) { Directory.Delete(tempPath); } //雖然錯誤是錯誤\t CS1503 \t參數1:無法從'System.IO.DirectoryInfo'轉換爲'string' – DialUp

相關問題