2013-04-15 132 views
1
String userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
String dr = @"C:\Users\" + userName + @"\AppData\temp"; 

DirectoryInfo dir = new DirectoryInfo(@dr); 
foreach (FileInfo file in dir.GetFiles()) 
{ 
    file.Delete(); 
} 
foreach (DirectoryInfo dire in dir.GetDirectories()) 
{ 
    dire.Delete(true); 
} 

我就是用這個刪除的文件夾的內容,並應根據計算機的用戶名&我所提供的管理權限
但是當任何文件犯規刪除其停止在那個文件上工作。我想要完成此過程文件刪除

+0

Try catch繼續 – Ofiris

回答

1

您必須在文件刪除語句周圍添加try/catch塊,以便您的循環即使在出現異常時也能繼續。我建議您在調用delete時記錄引發異常的文件列表。

1

如果其中一個文件不會被刪除,對file.Delete()的調用將引發異常。

如果你要處理它,你必須按如下包裝在一個try/catch:此外

foreach (FileInfo file in dir.GetFiles()) 
{ 
    try 
    { 
     file.Delete(); 
    } 

    catch (IOException exception) 
    { 
     // Here you should log the exception.Message 
    } 
} 
1
String userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
String dr = @"C:\Users\" + userName + @"\AppData\temp"; 
DirectoryInfo dir = new DirectoryInfo(@dr); 
foreach (FileInfo file in dir.GetFiles()) 
{ 
    try 
    { 
     file.Delete(); 
    } 
    catch (IOException ex) 
    {//Log ex.message 
     continue; 
    } 
} 
foreach (DirectoryInfo dire in dir.GetDirectories()) 
{ 
    try 
    { 
     dire.Delete(); 
    } 
    catch (IOException ex) 
    { //Log ex.message 
     continue; 
    } 
} 

,我建議你最好使用Path.Combine(),而不是連接字符串中。