ما اغلب با سناریویی مواجه می شویم که در آن چندین آرشیو ZIP در داخل ZIP دیگری کپسوله می شوند. در چنین مواقعی ابتدا باید ZIP والد و سپس آرشیوهای تودرتو را یکی یکی استخراج کنید. برای اینکه کارها را برای شما آسانتر کنیم، در این مقاله نحوه استخراج آرشیوهای ZIP تودرتو در C#.NET را بدون نوشتن کدهای پیچیده نشان خواهیم داد.

C#.NET API برای استخراج آرشیوهای ZIP تودرتو

برای باز کردن بایگانی‌های ZIP تودرتو، از Aspose.ZIP برای NET استفاده می‌کنیم. API برای انجام عملیات بایگانی از داخل برنامه های NET طراحی شده است. این به شما امکان می دهد فرمت های آرشیو محبوب را به طور یکپارچه ایجاد و دستکاری کنید. می توانید DLL API را دانلود یا با استفاده از NuGet نصب کنید.

PM> Install-Package Aspose.Zip

استخراج آرشیو ZIP تودرتو در سی شارپ

برای نشان دادن استخراج بایگانی های ZIP تو در تو، فایل ZIP زیر را ایجاد کرده ایم که شامل 3 ورودی است.

آرشیوهای ZIP تودرتو

آرشیوهای ZIP تودرتو

ما هر آرشیو ZIP تودرتو را استخراج می کنیم و محتوای آن را در یک پوشه جداگانه ذخیره می کنیم. مراحل زیر برای استخراج آرشیوهای ZIP تودرتو در سی شارپ است.

  • ابتدا یک شی FileStream برای بارگیری فایل ZIP ایجاد کنید.
  • سپس، فایل ZIP را با استفاده از کلاس Archive بارگیری کنید.
  • از طریق هر ArchiveEntry در مجموعه Archive.Entries تکرار کنید.
  • آرشیوهای ZIP موجود در مجموعه را فیلتر کنید و برای هر بایگانی مراحل زیر را انجام دهید:

نمونه کد زیر نحوه باز کردن آرشیوهای ZIP تودرتو در C#.NET را نشان می دهد.

// فایل ZIP را در یک جریان فایل باز کنید
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
    // فایل ZIP را با استفاده از کلاس Archive بارگیری کنید
    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 استخراج شده است.

استخراج آرشیوهای ZIP تو در تو در C#.NET

بایگانی‌های تودرتو از حالت فشرده خارج شده‌اند

یک مجوز API رایگان دریافت کنید

می توانید برای استفاده از Aspose.ZIP برای دات نت بدون محدودیت ارزیابی، یک مجوز موقت رایگان دریافت کنید.

نتیجه

در این مقاله نحوه استخراج آرشیوهای ZIP تودرتو در سی شارپ را یاد گرفتید. راهنمای گام به گام و نمونه کد نشان داده است که چگونه هر بایگانی تودرتو را در یک پوشه جداگانه باز کنید. علاوه بر این، می‌توانید برای بررسی سایر ویژگی‌های Aspose.ZIP برای دات‌نت از documentation دیدن کنید. همچنین، می‌توانید سؤالات خود را از طریق [تالار گفتمان15 ما بپرسید.

همچنین ببینید