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