إنشاء أرشيف ZIP مسطح في C#

مقدمة

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

لماذا إنشاء ZIP مسطح؟

يوفر إنشاء أرشيف ZIP مسطح العديد من المزايا:

  • يبسط إدارة ملفات ZIP: يقلل من التعقيد عند التعامل مع ملفات متعددة.
  • يستخرج جميع محتويات ZIP المتداخلة إلى أرشيف واحد: يجمع الملفات لتسهيل الوصول إليها.
  • يقلل من هياكل المجلدات الزائدة: يبسط تنظيم الملفات.

جدول المحتويات

  1. إعداد معالجة أرشيف ZIP في C#
  2. خطوات إنشاء أرشيف ZIP مسطح
  3. حفظ ملف ZIP المسطح
  4. معالجة دفعة من أرشيفات ZIP متعددة
  5. الحصول على ترخيص API مجاني
  6. الخاتمة والموارد الإضافية

1. إعداد معالجة أرشيف ZIP في C#

لإجراء معالجة فعالة لـ أرشيفات ZIP المتداخلة، سنستخدم Aspose.ZIP لـ .NET. توفر هذه المكتبة القوية:

  • استخراج ZIP وإعادة ضغط تلقائية.
  • دعم لعدة تنسيقات أرشيف: ZIP، TAR، GZip، والمزيد.
  • معالجة فعالة للأرشيفات الكبيرة.

التثبيت

يمكنك تثبيت المكتبة بسهولة عبر NuGet:

PM> Install-Package Aspose.Zip

بدلاً من ذلك، يمكنك تنزيل ملف DLL من صفحة تنزيل Aspose.


2. خطوات إنشاء أرشيف ZIP مسطح

اعتبر الهيكل التالي لـ ZIP المتداخل:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ file1.exe
 │ └ data.bin
 └ picture.gif

بعد التسطيح، سيتم دمج جميع محتويات ZIP الداخلية في ZIP الرئيسي:

flattened.zip
 ├ first.txt
 ├ picture.gif
 ├ file1.exe
 └ data.bin

مثال على الكود

إليك كيفية أتمتة استخراج ملفات ZIP المتداخلة:

// تحميل ملف ZIP الرئيسي
using (Archive parentZip = new Archive("parent.zip"))
{
    List<ArchiveEntry> toDelete = new List<ArchiveEntry>();
    List<string> newEntryNames = new List<string>();
    List<MemoryStream> newStreams = new List<MemoryStream>();

    foreach (ArchiveEntry entry in parentZip.Entries)
    {
        if (entry.Name.EndsWith(".zip", StringComparison.OrdinalIgnoreCase))
        {
            toDelete.Add(entry);
            using (MemoryStream zipStream = new MemoryStream())
            {
                entry.Open().CopyTo(zipStream);
                zipStream.Position = 0;
                using (Archive innerZip = new Archive(zipStream))
                {
                    foreach (ArchiveEntry innerEntry in innerZip.Entries)
                    {
                        using (MemoryStream entryStream = new MemoryStream())
                        {
                            innerEntry.Open().CopyTo(entryStream);
                            newEntryNames.Add(innerEntry.Name);
                            newStreams.Add(entryStream);
                        }
                    }
                }
            }
        }
    }

    foreach (var entry in toDelete)
        parentZip.DeleteEntry(entry);

    for (int i = 0; i < newEntryNames.Count; i++)
        parentZip.CreateEntry(newEntryNames[i], newStreams[i]);

    parentZip.Save("flattened.zip");
}

تقوم هذه الطريقة بفعالية بأتمتة استخراج ملفات ZIP المتداخلة، مما يضمن سير العمل بسلاسة.


3. حفظ ملف ZIP المسطح

بمجرد استخراج محتويات ZIP المتداخلة، احفظ ملف ZIP المسطح باستخدام السطر التالي من الكود:

parentZip.Save("flattened.zip");

هذا يضمن أن لديك أرشيف ZIP واحد بدون مجلدات متداخلة، مما يجعل إدارة الملفات أسهل بكثير.


4. معالجة دفعة من أرشيفات ZIP متعددة

إذا كنت بحاجة إلى تسطيح عدة أرشيفات ZIP تقع في مجلد معين، يمكنك استخدام الشيفرة التالية:

string[] files = Directory.GetFiles("zip_folder", "*.zip");
foreach (string file in files)
{
    using (Archive archive = new Archive(file))
    {
        archive.ExtractToDirectory("output_folder");
    }
}

تتيح لك هذه الطريقة معالجة ZIP بكميات كبيرة تلقائيًا، مما يوفر لك الوقت والجهد.


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

لإلغاء قفل الميزات الكاملة لـ Aspose.ZIP، يمكنك طلب ترخيص مؤقت مجاني.

للحصول على وثائق شاملة، قم بزيارة دليل Aspose.ZIP. إذا كان لديك أي أسئلة، لا تتردد في التفاعل مع المجتمع في منتدى Aspose.


6. الخاتمة والموارد الإضافية

ملخص

في هذا الدليل، تناولنا:

كيفية تسطيح ملفات ZIP في C#
استخراج أرشيفات ZIP المتداخلة
حفظ أرشيف ZIP النهائي
معالجة ملفات ZIP متعددة في وقت واحد

مع Aspose.ZIP لـ .NET، يمكنك بفعالية استخراج وإدارة أرشيفات ZIP في تطبيقاتك. ابدأ تحسين سير عمل معالجة ZIP اليوم!