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