文件删除特定文件夹

时间:2013-04-15 16:37:20

标签: c# .net

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

我用它来删除文件夹的内容,这应该取决于计算机和用户名的用户名。我提供了管理员权限
但是当任何文件没有删除时,它会停止在该文件上工作。我希望这个过程完成

3 个答案:

答案 0 :(得分:1)

您必须在文件删除语句周围添加try / catch块,以便即使出现异常也可以继续循环。我建议您在调用delete时记录引发异常的文件列表。

答案 1 :(得分:1)

如果其中一个文件无法删除,则对file.Delete()的调用将抛出异常。

如果你想处理它,你必须把它包装在try / catch中,如下所示:

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

    catch (IOException exception)
    {
        // Here you should log the exception.Message
    }
}

答案 2 :(得分: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()而不是连接字符串。