diff --git a/src/SharpCompress/Archives/ArchiveFactory.cs b/src/SharpCompress/Archives/ArchiveFactory.cs index b81e2c0e1..8bfc86cea 100644 --- a/src/SharpCompress/Archives/ArchiveFactory.cs +++ b/src/SharpCompress/Archives/ArchiveFactory.cs @@ -122,10 +122,7 @@ public static void WriteToDirectory( ) { using var archive = Open(sourceArchive); - foreach (var entry in archive.Entries) - { - entry.WriteToDirectory(destinationDirectory, options); - } + archive.WriteToDirectory(destinationDirectory, options); } private static T FindFactory(FileInfo finfo) diff --git a/src/SharpCompress/Archives/IArchiveExtensions.cs b/src/SharpCompress/Archives/IArchiveExtensions.cs index 4cba54638..337e4ccc5 100644 --- a/src/SharpCompress/Archives/IArchiveExtensions.cs +++ b/src/SharpCompress/Archives/IArchiveExtensions.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Threading; using SharpCompress.Common; +using SharpCompress.Readers; namespace SharpCompress.Archives; @@ -18,10 +19,8 @@ public static void WriteToDirectory( ExtractionOptions? options = null ) { - foreach (var entry in archive.Entries.Where(x => !x.IsDirectory)) - { - entry.WriteToDirectory(destinationDirectory, options); - } + using var reader = archive.ExtractAllEntries(); + reader.WriteAllToDirectory(destinationDirectory, options); } ///