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

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

4

3 回答 3

1

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

于 2013-04-15T16:40:27.990 回答
1

如果其中一个文件不会删除,则调用file.Delete()将引发异常。

如果要处理它,则必须将其包装在 try/catch 中,如下所示:

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

    catch (IOException exception)
    {
        // Here you should log the exception.Message
    }
}
于 2013-04-15T16:41:33.200 回答
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()而不是连接字符串。

于 2013-04-15T16:42:40.780 回答