aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/IO/FileSystemHelper.cs
diff options
context:
space:
mode:
authorShadowghost <Shadowghost@users.noreply.github.com>2024-06-24 20:28:58 -0400
committerJoshua M. Boniface <joshua@boniface.me>2024-06-24 20:28:58 -0400
commit6734450d40684d8f68ed9ebd76885b62613f7eb5 (patch)
tree06ddcc84a261db9eaabff7fa1052f7e57a4ad747 /MediaBrowser.Controller/IO/FileSystemHelper.cs
parentac114b27a9c27e46e2f3943bf276c86554215d27 (diff)
Backport pull request #12025 from jellyfin/release-10.9.z
Fix empty image folder removal for legacy locations Original-merge: 476dc01f4d5bf0fdf391935ef0759b0583bf7026 Merged-by: Bond-009 <bond.009@outlook.com> Backported-by: Joshua M. Boniface <joshua@boniface.me>
Diffstat (limited to 'MediaBrowser.Controller/IO/FileSystemHelper.cs')
-rw-r--r--MediaBrowser.Controller/IO/FileSystemHelper.cs64
1 files changed, 64 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/IO/FileSystemHelper.cs b/MediaBrowser.Controller/IO/FileSystemHelper.cs
new file mode 100644
index 000000000..1a33c3aa8
--- /dev/null
+++ b/MediaBrowser.Controller/IO/FileSystemHelper.cs
@@ -0,0 +1,64 @@
+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);
+ }
+ }
+ }
+ }
+}