استخراج محتوى FB2 من ZIP في .NET

استخدم Aspose.ZIP for .NET لفتح أرشيف ZIP، فحص إدخالاته، واستعادة ملفات FB2 التي يحتاجها تطبيق C#. ينتمي FB2 إلى فئة كتب إلكترونية ومنشورات؛ وفي هذه الصفحة يعني الاستخراج اختيار الملفات المطابقة من حاوية ZIP وكتابتها إلى وجهة يتحكم بها التطبيق، وليس تحويل محتوى الملف الداخلي.

يناسب هذا المسار استيراد المكتبات الرقمية، معالجة الكتب، مراجعة المحتوى، وترحيل المنشورات. يستطيع التطبيق تجاهل العناصر غير المرتبطة، تطبيق حدود الحجم والمسارات، وتمرير الملفات المقبولة إلى المرحلة التالية من دون فك الحزمة بالكامل.

كيفية استخراج ملفات FB2 من ZIP باستخدام C#

ثبت حزمة Aspose.ZIP for .NET وأضف namespace Aspose.Zip. تتوفر بيانات الإدخال قبل الكتابة، لذلك يمكن للتطبيق فحص ArchiveEntry.Name و ArchiveEntry.IsDirectory و ArchiveEntry.UncompressedSize قبل استخراج أي ملف.


Package Manager Console Command

PM> Install-Package Aspose.Zip

افتح ZIP باستخدام Archive، استعرض Archive.Entries، اختر الإدخالات التي تطابق .fb2، ثم استدع ArchiveEntry.Extract لكل مسار إخراج معتمد. تستخدم الأمثلة أسماء الملفات النهائية أو مساراتا متحقق منها حتى لا تتحكم أسماء الأرشيف في مكان الكتابة.

خطوات استعادة ملفات FB2 في C#

  • حدد مسار ZIP المصدر وأنشئ مجلد إخراج معزولا.
  • افتح الحزمة باستخدام الفئة Archive.
  • استعرض Archive.Entries بدلا من فك كل العناصر مباشرة.
  • اختر الإدخالات التي تطابق .fb2 أو القاعدة الخاصة بالتنسيق.
  • ابن مسار إخراج يبقى داخل الجذر المعتمد.
  • ارفض الإدخالات التي تتجاوز حد الحجم بعد الاستخراج.
  • احفظ كل عنصر مقبول باستخدام ArchiveEntry.Extract.

متطلبات النظام

قبل تشغيل المثال، تأكد من توفر:

  • Runtime مدعوم من .NET على Windows أو Linux أو macOS.
  • Visual Studio أو Rider أو VS Code أو بيئة تطوير C# أخرى.
  • Aspose.ZIP for .NET مثبتا عبر NuGet أو مضافا كمرجع assembly.
  • صلاحية قراءة لأرشيف ZIP وصلاحية كتابة لمجلد الإخراج.
  • حدود واضحة للحجم والوقت والتخزين عند التعامل مع ملفات غير موثوقة.

مثال C#: اختيار ملفات FB2 داخل أرشيف ZIP

يفتح المثال حزمة ZIP، يطبق فلترة على الإدخالات غير المجلدية، ثم يكتب الملفات المطابقة إلى وجهة واحدة أو إلى بنية آمنة حسب حاجة التنسيق. في الإنتاج، حدد سياسة واضحة للتعامل مع الأسماء المكررة.

استخراج ملفات FB2 من ZIP - C#

using Aspose.Zip;
using System;
using System.IO;

string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-fb2");
string[] allowedExtensions = { ".fb2" };
const ulong MaxEntrySize = 100UL * 1024 * 1024;

Directory.CreateDirectory(outputDirectory);

using (var archive = new Archive(archivePath))
{
    foreach (ArchiveEntry entry in archive.Entries)
    {
        if (entry.IsDirectory) continue;

        string fileName = Path.GetFileName(entry.Name);
        if (string.IsNullOrWhiteSpace(fileName)) continue;

        string extension = Path.GetExtension(fileName);
        if (!Array.Exists(
            allowedExtensions,
            value => string.Equals(value, extension, StringComparison.OrdinalIgnoreCase)))
        {
            continue;
        }

        if (entry.UncompressedSize > MaxEntrySize)
        {
            throw new InvalidDataException(
                $"Entry '{fileName}' exceeds the 100 MB extraction limit.");
        }

        string destinationPath = Path.Combine(outputDirectory, fileName);
        entry.Extract(destinationPath);
    }
}

ملاحظات إنتاجية حول ملفات FB2

الامتداد لا يثبت أن المنشور مكتمل أو قابل للقراءة. افتح الملف المستعاد بمكون كتب أو مستندات قبل إدخاله في النظام.

لا تعتبر الامتداد دليلا كافيا على صحة المحتوى. إذا كانت المرحلة التالية ستقرأ الملف أو تعرضه أو تحوله، فليتم التحقق بواسطة المكون المسؤول عن ذلك التنسيق. استخدم مجلدا فريدا لكل عملية وطبق سياسة محددة للأسماء المكررة.

اعتبارات الأمان والخصوصية

عامل أسماء الإدخالات ومحتوى الأرشيف كمدخلات غير موثوقة. لا تدمج ArchiveEntry.Name مباشرة مع مجلد الإخراج؛ فقد يحتوي الاسم على مسار مطلق أو انتقال إلى مجلد أب. عند الحفاظ على المجلدات، حل المسار النهائي وتأكد من بقائه داخل الجذر المعتمد.

اضبط حدودا للحجم المضغوط، الحجم بعد الاستخراج، عدد الإدخالات، وقت التنفيذ، والتزامن. استخدم تخزينا مؤقتا محدود الصلاحيات، نظف الناتج بعد الفشل، وتجنب تسجيل أسماء الملفات الخاصة أو كلمات المرور أو محتوى الملفات.

أسئلة شائعة حول استخراج FB2

كيف أستخرج ملفات FB2 فقط من أرشيف ZIP في C#؟

افتح ZIP باستخدام Archive، استعرض Archive.Entries، طبق شرط .fb2 أو قاعدة التنسيق، ثم استدع Extract لكل مسار إخراج مقبول.

هل يتحقق Aspose.ZIP من محتوى ملف FB2 نفسه؟

لا. Aspose.ZIP يستعيد الملف من الأرشيف. قراءة بنية FB2 أو التحقق منها أو تحويلها مسؤولية مكون متخصص بذلك التنسيق.

هل يمكن استخدام الفكرة نفسها مع 7Z أو RAR أو TAR؟

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

كيف أتعامل مع أسماء FB2 المكررة؟

حدد السياسة قبل الاستخراج: رفض التكرار، إنشاء اسم فريد، أو الحفاظ على بنية مجلدات نسبية بعد التحقق من المسارات.