تقسيم ملفات MBOX

تقسيم تخزين MBOX / إلغاء عملية التقسيم

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

واجهات برمجة التطبيقات المدعومة وفقًا لإصدار .NET

لإطار .NET Framework 4.5 و .NET Core

يمكنك تجزئة بيانات MBOX باستخدام SplitInto طريقة الـ MboxStorageReader فئة، مع خيار تضمين رمز إلغاء أو تخصيص تسمية ملف الإخراج:

المعلمات:

  • chunkSize: الحجم التقريبي لكل قطعة بالبايت.
  • outputPath: مسار المجلد حيث سيتم إنشاء القطع.
  • partFileNamePrefix: البادئة التي سيتم إضافتها إلى اسم ملف كل جزء.
  • token: CancellationToken يسمح بإلغاء العملية المحتمل.

لإصدارات .NET أقل من 4.5

الإصدارات الأقدم تدعم نفس SplitInto طريقة ولكن بدون رموز الإلغاء:

عينات الشيفرة للتقسيم المتحكم به مع الإلغاء

توضح عينات الشيفرة التالية كيفية تقسيم الأرشيف إلى ما يصل إلى 5 أجزاء، مع إلغاء العملية تلقائيًا بعد ذلك:

.NET 4.5 / .NET Core

int partCount = 0;

var tokenSource = new CancellationTokenSource();

var mbox = new MboxrdStorageReader(fileName, new MboxLoadOptions { LeaveOpen = false });

// Subscribe to events
mbox.MboxFileCreated += (sender, e) =>
{
    partCount++;
    if (partCount >= 5)
        tokenSource.Cancel();
};

System.Threading.Tasks.Task task = mbox.SplitInto(10000000, outputPath, tokenSource.Token);
task.Wait();

الإصدارات الأقدم من .NET 4.5

int partCount = 0;
var mbox = new MboxrdStorageReader(fileName, new MboxLoadOptions { LeaveOpen = false });
mbox.SplitInto(10000000, outputPath);

mbox.MboxFileCreated += (sender, e) =>
{
    partCount++;
    if (partCount >= 5)
        mbox.Cancel();
};

تقسيم ملفات MBOX الكبيرة بشكل غير متزامن

التعامل مع أرشيفات بريد إلكتروني كبيرة قد يكون غير فعال ويتطلب ذاكرة كبيرة. لتحسين الأداء وسهولة الإدارة، يوفر Aspose.Email for .NET الطريقة غير المتزامنة SplitIntoAsync طريقة تسمح لك بتقسيم ملفات كبيرة إلى أجزاء أصغر - دون حجب الخيط الرئيسي. يوضح المثال البرمجي أدناه كيفية الاستخدام MboxStorageReader.CreateReaderAsync لفتح ملف MBOX كبير بشكل غير متزامن ثم استدعاء SplitIntoAsync لتقسيمه إلى ملفات أصغر، كل منها بحجم أقصى 10 ميغابايت. تُحفظ الأجزاء الناتجة في الدليل المحدد للإخراج باستخدام البادئة "chunk_".

using (var reader = await MboxStorageReader.CreateReaderAsync("input.mbox", new MboxLoadOptions()))
{
    await reader.SplitIntoAsync(10 * 1024 * 1024, "outputDirectory", "chunk_", CancellationToken.None);
}