/// <summary> /// Permanently deletes a file or directory. /// </summary> /// <param name="fsi">File or directory to delete.</param> public static void Delete(IFileSystemInfo fsi) { fsi.Attributes = FileAttributes.Normal; var di = fsi as IDirectoryInfo; if (di != null) { foreach (var dirInfo in di.GetFileSystemInfos()) { Delete(dirInfo); } } fsi.Delete(); }
/// <summary> /// Deletes a file or directory including read only directories or files. /// </summary> /// <param name="fileOrDirectory">File or directory to delete.</param> /// <exception cref="ArgumentNullException">When file or direcory is null.</exception> public static void DeleteFileSystemInfo(this IFileSystemInfo fileOrDirectory) { if (fileOrDirectory == null) { throw new ArgumentNullException("fileOrDirectory"); } fileOrDirectory.Attributes = FileAttributes.Normal; var di = fileOrDirectory as IDirectoryInfo; if (di != null) { foreach (var dirInfo in di.GetFileSystemInfos()) { DeleteFileSystemInfo(dirInfo); } } fileOrDirectory.Delete(); }