غالبًا ما نواجه السيناريو حيث يتم تغليف أرشيفات متعددة ZIP داخل ملف ZIP آخر. في مثل هذه الحالات ، عليك أولاً استخراج ملف ZIP الأصلي ثم الأرشيفات المتداخلة واحدًا تلو الآخر. لتسهيل الأمور عليك ، سنشرح في هذه المقالة كيفية استخراج أرشيفات ZIP المتداخلة في C# .NET دون كتابة تعليمات برمجية معقدة.

C# .NET API لاستخراج أرشيفات مضغوطة متداخلة

لفك ضغط أرشيفات ZIP المتداخلة ، سنستخدم Aspose.ZIP for .NET. تم تصميم API لأداء عمليات الأرشفة من داخل تطبيقات .NET. يتيح لك إنشاء تنسيقات الأرشيف الشائعة ومعالجتها بسلاسة. يمكنك إما تنزيل DLL الخاصة بواجهة برمجة التطبيقات أو تثبيته باستخدام NuGet.

PM> Install-Package Aspose.Zip

استخراج أرشيفات ZIP المتداخلة في C#

لإثبات استخراج أرشيفات مضغوطة متداخلة ، قمنا بإنشاء ملف ZIP التالي الذي يحتوي على 3 إدخالات.

أرشيفات مضغوطة متداخلة

أرشيفات مضغوطة متداخلة

سنقوم باستخراج كل أرشيف مضغوط متداخل وحفظ محتواه في مجلد منفصل. فيما يلي خطوات استخراج أرشيفات مضغوطة متداخلة في C#.

  • أولاً ، قم بإنشاء كائن FileStream لتحميل ملف ZIP.
  • بعد ذلك ، قم بتحميل ملف مضغوط باستخدام فئة الأرشيف.
  • كرر من خلال كل ArchiveEntry في Archive.Entries مجموعة.
  • قم بتصفية أرشيفات ZIP في المجموعة ولكل أرشيف ، نفذ الخطوات التالية:

يوضح نموذج التعليمات البرمجية التالي كيفية فك ضغط أرشيفات ZIP المتداخلة في C# .NET.

// افتح ملف ZIP في تدفق ملف
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
    // قم بتحميل ملف ZIP باستخدام فئة الأرشيف
    using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
    {
        // الوصول إلى كل إدخال في أرشيف ZIP
        foreach(ArchiveEntry entry in archive.Entries)
        {
            if(entry.Name.ToLower().Contains(".zip"))
            {
                // إنشاء دفق الذاكرة للأرشيف المتداخل
                MemoryStream nestedArchiveStream = new MemoryStream();

                // نسخ الأرشيف إلى تيار الذاكرة
                entry.Open().CopyTo(nestedArchiveStream);

                // قم بتحميل الأرشيف المتداخل من دفق الذاكرة
                using (var nestedArchive = new Archive(nestedArchiveStream))
                {
                    // استخراج الأرشيف إلى القرص.
                    nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
                }                               

            }

        } 
    }
}

فيما يلي لقطة شاشة لأرشيفات ZIP المستخرجة.

استخراج أرشيفات مضغوطة متداخلة في C# .NET

المحفوظات غير المضغوطة المتداخلة

احصل على ترخيص API مجاني

يمكنك الحصول على ترخيص مؤقت مجاني لاستخدام Aspose.ZIP لـ .NET بدون قيود تقييم.

استنتاج

في هذه المقالة ، تعلمت كيفية استخراج أرشيفات مضغوطة متداخلة في C#. يوضح الدليل خطوة بخطوة وعينة التعليمات البرمجية كيفية فك ضغط كل أرشيف متداخل في مجلد منفصل. بالإضافة إلى ذلك ، يمكنك زيارة التوثيق لاستكشاف الميزات الأخرى لبرنامج Aspose.ZIP لـ .NET. أيضًا ، يمكنك طرح أسئلتك عبر المنتدى.

أنظر أيضا