| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | using System;using System.IO;using System.Linq;using MediaBrowser.Model.IO;using Microsoft.Extensions.Logging;namespace MediaBrowser.Controller.IO;/// <summary>/// Helper methods for file system management./// </summary>public static class FileSystemHelper{    /// <summary>    /// Deletes the file.    /// </summary>    /// <param name="fileSystem">The fileSystem.</param>    /// <param name="path">The path.</param>    /// <param name="logger">The logger.</param>    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);        }    }    /// <summary>    /// Recursively delete empty folders.    /// </summary>    /// <param name="fileSystem">The fileSystem.</param>    /// <param name="path">The path.</param>    /// <param name="logger">The logger.</param>    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);                }            }        }    }}
 |