From 188a426ddea1979ab0400c248056ab97dedb36fe Mon Sep 17 00:00:00 2001 From: Alex Prabhat Bara <50404684+alexprabhat99@users.noreply.github.com> Date: Tue, 16 Jul 2024 16:20:04 +0530 Subject: [PATCH] fix for missing empty directories when using ExtractToDirectory --- src/SharpCompress/Archives/IArchiveExtensions.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/SharpCompress/Archives/IArchiveExtensions.cs b/src/SharpCompress/Archives/IArchiveExtensions.cs index 382c3ddf..b47f3394 100644 --- a/src/SharpCompress/Archives/IArchiveExtensions.cs +++ b/src/SharpCompress/Archives/IArchiveExtensions.cs @@ -54,14 +54,23 @@ public static class IArchiveExtensions var entry = entries.Entry; if (entry.IsDirectory) { + var dirPath = Path.Combine(destination, entry.Key.NotNull("Entry Key is null")); + if (Path.GetDirectoryName(dirPath + "/") is { } emptyDirectory && seenDirectories.Add(dirPath)) + { + Directory.CreateDirectory(emptyDirectory); + } continue; } - // Create each directory + // Create each directory if not already created var path = Path.Combine(destination, entry.Key.NotNull("Entry Key is null")); - if (Path.GetDirectoryName(path) is { } directory && seenDirectories.Add(path)) + if (Path.GetDirectoryName(path) is { } directory) { - Directory.CreateDirectory(directory); + if (!Directory.Exists(directory) && !seenDirectories.Contains(directory)) + { + Directory.CreateDirectory(directory); + seenDirectories.Add(directory); + } } // Write file