Create Flat ZIP Archive in C#

هنگام کار با آرشیوهای ZIP، معمولاً با موقعیت‌هایی مواجه می‌شوید که یک فایل ZIP شامل فایل‌های ZIP دیگر است و ساختار تو در تویی را ایجاد می‌کند. اگر هدف شما ساده‌سازی این موضوع با استخراج همه آرشیوهای ZIP داخلی به آرشیو خارجی است، در جای درستی هستید. در این مقاله، ما نحوه ایجاد یک آرشیو ZIP مسطح در C# را با استفاده از Aspose.ZIP for .NET بررسی خواهیم کرد.

فهرست مطالب

مروری بر API .NET برای ایجاد آرشیوهای ZIP مسطح

برای ایجاد آرشیوهای ZIP مسطح، از کتابخانه Aspose.ZIP for .NET استفاده خواهیم کرد. این API قدرتمند آرشیو به شما امکان می‌دهد که فرمت‌های مختلف آرشیو از جمله ZIP، TAR، GZip و 7z را ایجاد و استخراج کنید. شما می‌توانید به راحتی این کتابخانه را از NuGet نصب کنید یا DLL آن را از بخش دانلود دانلود کنید.

PM> Install-Package Aspose.Zip

مراحل ایجاد یک آرشیو ZIP مسطح در C#

برای درک بهتر ساختار یک آرشیو ZIP مسطح، به مثال زیر توجه کنید. در ابتدا، ما یک آرشیو ZIP داریم که شامل یک آرشیو ZIP دیگر است:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ game.exe
 │ └ subitem.bin
 └ picture.gif

پس از تبدیل این آرشیو ZIP به یک ساختار مسطح، تمام ورودی‌ها از ZIP داخلی به ZIP والد استخراج خواهند شد و منجر به ساختار زیر خواهد شد:

flatten.zip
 ├ first.txt
 ├ picture.gif
 ├ game.exe
 └ subitem.bin

مراحل پیاده‌سازی

در اینجا نحوه ایجاد برنامه‌نویسی یک آرشیو ZIP مسطح در C# آورده شده است:

  1. بارگذاری آرشیو ZIP والد: از کلاس Archive برای بارگذاری ZIP والد استفاده کنید.
  2. ایجاد لیست‌ها: لیست‌هایی برای ذخیره:
    • ورودی‌هایی که باید از ZIP والد حذف شوند
    • ورودی‌های استخراج شده و نام‌های آن‌ها
  3. تکرار در ورودی‌های آرشیو: از طریق هر ArchiveEntry در ZIP والد با استفاده از مجموعه Archive.Entries تکرار کنید.
  4. پردازش هر ورودی:
    • بررسی کنید که آیا ورودی یک آرشیو ZIP است با استفاده از ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase).
    • اگر اینطور بود، آن را به لیست ورودی‌های حذف اضافه کنید.
    • ورودی را به یک شیء MemoryStream با استفاده از ArchiveEntry.Open().CopyTo(MemoryStream) باز کنید.
    • از طریق ورودی‌های آرشیو ZIP داخلی تکرار کنید و اقدامات زیر را انجام دهید:
      • نام هر ورودی را به لیست ورودی‌های اضافه شده اضافه کنید.
      • هر ورودی را به یک MemoryStream با استفاده از ArchiveEntry.Open().CopyTo(MemoryStream) بارگذاری کنید.
      • ورودی را به لیست ورودی‌های اضافه شده به ZIP والد اضافه کنید.
  5. حذف ورودی‌های ZIP داخلی: از طریق لیست آرشیوهای ZIP داخلی تکرار کنید و هر ورودی را با استفاده از روش Archive.DeleteEntry(ArchiveEntry) حذف کنید.
  6. اضافه کردن ورودی‌های جدید به ZIP والد: از طریق لیست ورودی‌های اضافه شده تکرار کنید و هر ورودی را با استفاده از روش Archive.CreateEntry(String, Stream) اضافه کنید.
  7. ذخیره آرشیو ZIP والد: در نهایت، آرشیو ZIP والد اصلاح شده را با استفاده از روش Archive.Save(String) ذخیره کنید.

در اینجا یک نمونه کد برای نشان دادن نحوه ایجاد یک آرشیو ZIP مسطح در C# آورده شده است:

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

شما می‌توانید یک مجوز موقت رایگان برای استفاده از Aspose.ZIP for .NET بدون هیچ گونه محدودیت ارزیابی دریافت کنید.

نتیجه‌گیری

در این آموزش، شما یاد گرفتید که چگونه به طور مؤثر یک آرشیو ZIP مسطح را با استفاده از C# ایجاد کنید. ما فرآیند استخراج آرشیوهای ZIP داخلی به ZIP والد را نشان دادیم و به طور مؤثر از ایجاد پوشه‌های تو در تو جلوگیری کردیم. برای اطلاعات بیشتر، می‌توانید به مستندات Aspose.ZIP for .NET مراجعه کنید یا از طریق فروم با ما تماس بگیرید.

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

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