ما اغلب با سناریویی مواجه می شویم که در آن چندین آرشیو ZIP در داخل ZIP دیگری کپسوله می شوند. در چنین مواقعی ابتدا باید ZIP والد و سپس آرشیوهای تودرتو را یکی یکی استخراج کنید. برای اینکه کارها را برای شما آسانتر کنیم، در این مقاله نحوه استخراج آرشیوهای ZIP تودرتو در C#.NET را بدون نوشتن کدهای پیچیده نشان خواهیم داد.
- NET API برای استخراج آرشیوهای ZIP تودرتو
- بایگانیهای ZIP تودرتو را در سی شارپ از حالت فشرده خارج کنید
C#.NET API برای استخراج آرشیوهای ZIP تودرتو
برای باز کردن بایگانیهای ZIP تودرتو، از Aspose.ZIP برای NET استفاده میکنیم. API برای انجام عملیات بایگانی از داخل برنامه های NET طراحی شده است. این به شما امکان می دهد فرمت های آرشیو محبوب را به طور یکپارچه ایجاد و دستکاری کنید. می توانید DLL API را دانلود یا با استفاده از NuGet نصب کنید.
PM> Install-Package Aspose.Zip
استخراج آرشیو ZIP تودرتو در سی شارپ
برای نشان دادن استخراج بایگانی های ZIP تو در تو، فایل ZIP زیر را ایجاد کرده ایم که شامل 3 ورودی است.
ما هر آرشیو ZIP تودرتو را استخراج می کنیم و محتوای آن را در یک پوشه جداگانه ذخیره می کنیم. مراحل زیر برای استخراج آرشیوهای ZIP تودرتو در سی شارپ است.
- ابتدا یک شی FileStream برای بارگیری فایل ZIP ایجاد کنید.
- سپس، فایل ZIP را با استفاده از کلاس Archive بارگیری کنید.
- از طریق هر ArchiveEntry در مجموعه Archive.Entries تکرار کنید.
- آرشیوهای ZIP موجود در مجموعه را فیلتر کنید و برای هر بایگانی مراحل زیر را انجام دهید:
- یک شی MemoryStream ایجاد کنید و ورودی بایگانی را با استفاده از روش ArchiveEntry.Open().CopyTo(Stream) در آن کپی کنید.
- یک نمونه از کلاس Archive برای بارگیری بایگانی تودرتو ایجاد کنید.
- در نهایت با استفاده از روش Archive.ExtractToDirectory(string) بایگانی را در یک پوشه استخراج کنید.
نمونه کد زیر نحوه باز کردن آرشیوهای 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 استخراج شده است.
یک مجوز API رایگان دریافت کنید
می توانید برای استفاده از Aspose.ZIP برای دات نت بدون محدودیت ارزیابی، یک مجوز موقت رایگان دریافت کنید.
نتیجه
در این مقاله نحوه استخراج آرشیوهای ZIP تودرتو در سی شارپ را یاد گرفتید. راهنمای گام به گام و نمونه کد نشان داده است که چگونه هر بایگانی تودرتو را در یک پوشه جداگانه باز کنید. علاوه بر این، میتوانید برای بررسی سایر ویژگیهای Aspose.ZIP برای داتنت از documentation دیدن کنید. همچنین، میتوانید سؤالات خود را از طریق [تالار گفتمان15 ما بپرسید.