تقسيم ملفات MBOX
تقسيم تخزين MBOX / إلغاء عملية التقسيم
توفر Aspose.Email طرقًا لتقسيم ملفات صندوق البريد الكبيرة إلى أجزاء يمكن التحكم فيها. يساعد ذلك على تحسين الأداء وكفاءة الذاكرة، خصوصًا عند التعامل مع أرشيفات بريد إلكتروني ضخمة. تختلف خيارات التقسيم المتاحة حسب إصدار .NET الذي تستخدمه.
واجهات برمجة التطبيقات المدعومة وفقًا لإصدار .NET
لإطار .NET Framework 4.5 و .NET Core
يمكنك تجزئة بيانات MBOX باستخدام SplitInto طريقة الـ MboxStorageReader فئة، مع خيار تضمين رمز إلغاء أو تخصيص تسمية ملف الإخراج:
-
SplitInto(long chunkSize, string outputPath, CancellationToken token)
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix, CancellationToken token)
المعلمات:
- chunkSize: الحجم التقريبي لكل قطعة بالبايت.
- outputPath: مسار المجلد حيث سيتم إنشاء القطع.
- partFileNamePrefix: البادئة التي سيتم إضافتها إلى اسم ملف كل جزء.
- token: CancellationToken يسمح بإلغاء العملية المحتمل.
لإصدارات .NET أقل من 4.5
الإصدارات الأقدم تدعم نفس SplitInto طريقة ولكن بدون رموز الإلغاء:
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix)
-
Cancel() - تُستخدم لقطع عملية التقسيم في منتصفها.
عينات الشيفرة للتقسيم المتحكم به مع الإلغاء
توضح عينات الشيفرة التالية كيفية تقسيم الأرشيف إلى ما يصل إلى 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);
}