public virtual void DeleteDirectory(DirectoryInfo directory)
{
// make sure all files are not read-only
FileInfo[] files = directory.GetFiles("*.*", SearchOption.AllDirectories);
foreach (FileInfo fileInfo in files)
{
if (fileInfo.IsReadOnly)
{
fileInfo.IsReadOnly = false;
}
}
// make sure all subdirectories are not read-only
DirectoryInfo[] directories = directory.GetDirectories("*.*", SearchOption.AllDirectories);
foreach (DirectoryInfo subdir in directories)
{
if ((subdir.Attributes & FileAttributes.ReadOnly) > 0)
{
subdir.Attributes &= ~FileAttributes.ReadOnly;
}
}
// make sure top level directory is not read-only
if ((directory.Attributes & FileAttributes.ReadOnly) > 0)
{
directory.Attributes &= ~FileAttributes.ReadOnly;
}
directory.Delete(true);
}