BlinkSyncLib.Sync.DeleteDirectory C# (CSharp) Method

DeleteDirectory() public method

Robustly deletes a directory including all subdirectories and contents
public DeleteDirectory ( DirectoryInfo directory ) : void
directory System.IO.DirectoryInfo
return void
        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);
        }