From 5450b9a700c18dac980a91ec8a11552cdd939508 Mon Sep 17 00:00:00 2001 From: Morilli <35152647+Morilli@users.noreply.github.com> Date: Fri, 28 Feb 2025 21:46:04 +0100 Subject: [PATCH] make WriteToDirectory functions use ExtractAllEntries for extracting files from solid archives this can be required to get acceptable extraction performance and should therefore always be called. --- src/SharpCompress/Archives/ArchiveFactory.cs | 5 +---- src/SharpCompress/Archives/IArchiveExtensions.cs | 7 +++---- 2 files changed, 4 insertions(+), 8 deletions(-) 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); } ///