using System; using System.IO; using System.Linq; using MediaBrowser.Model.IO; using Microsoft.Extensions.Logging; namespace MediaBrowser.Controller.IO; /// /// Helper methods for file system management. /// public static class FileSystemHelper { /// /// Deletes the file. /// /// The fileSystem. /// The path. /// The logger. public static void DeleteFile(IFileSystem fileSystem, string path, ILogger logger) { try { fileSystem.DeleteFile(path); } catch (UnauthorizedAccessException ex) { logger.LogError(ex, "Error deleting file {Path}", path); } catch (IOException ex) { logger.LogError(ex, "Error deleting file {Path}", path); } } /// /// Recursively delete empty folders. /// /// The fileSystem. /// The path. /// The logger. public static void DeleteEmptyFolders(IFileSystem fileSystem, string path, ILogger logger) { foreach (var directory in fileSystem.GetDirectoryPaths(path)) { DeleteEmptyFolders(fileSystem, directory, logger); if (!fileSystem.GetFileSystemEntryPaths(directory).Any()) { try { Directory.Delete(directory, false); } catch (UnauthorizedAccessException ex) { logger.LogError(ex, "Error deleting directory {Path}", directory); } catch (IOException ex) { logger.LogError(ex, "Error deleting directory {Path}", directory); } } } } }