تقسیم فایل‌های MBOX

تقسیم ذخیره‌سازی MBOX/لغو عملیات تقسیم

Aspose.Email متدهایی برای تقسیم فایل‌های بزرگ صندوق پست به بخش‌های قابل مدیریت فراهم می‌کند. این کار به بهبود عملکرد و کارایی حافظه، به‌ویژه هنگام کار با آرشیوهای بزرگ ایمیل کمک می‌کند. گزینه‌های تقسیم موجود بسته به نسخه .NET که استفاده می‌کنید متفاوت است.

APIهای پشتیبانی‌شده بر حسب نسخه .NET

برای .NET Framework 4.5 و .NET Core

می‌توانید داده‌های MBOX را با استفاده از SplitInto متد از MboxStorageReader کلاس، با گزینه افزودن توکن لغو یا سفارشی‌سازی نام‌گذاری فایل خروجی:

پارامترها:

  • chunkSize: اندازه تقریبی هر تکه به بایت.
  • outputPath: مسیر پوشه‌ای که در آن تکه‌ها ایجاد می‌شوند.
  • partFileNamePrefix: پیشوندی که به نام فایل هر بخش اضافه می‌شود.
  • token: یک CancellationToken که امکان لغو ممکن عملیات را می‌دهد.

برای نسخه‌های .NET زیر 4.5

نسخه‌های قبلی نیز همین پشتیبانی را دارند SplitInto متد اما بدون توکن‌های لغو:

نمونه‌های کد برای تقسیم کنترل‌شده با لغو

نمونه‌های کد زیر نشان می‌دهند چگونه یک آرشیو را به حداکثر ۵ بخش تقسیم کنید و پس از آن به‌صورت خودکار عملیات را لغو کنید:

.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 برای .NET قابلیت‌های ناهمگام را فراهم می‌کند SplitIntoAsync متد، که به شما امکان می‌دهد فایل‌های بزرگ را به تکه‌های کوچکتر تقسیم کنید - بدون مسدود کردن رشته اصلی. نمونه کد زیر نشان می‌دهد چگونه از MboxStorageReader.CreateReaderAsync به‌منظور باز کردن یک فایل MBOX بزرگ به‌صورت ناهمگام و سپس فراخوانی SplitIntoAsync به‌منظور تقسیم آن به فایل‌های کوچکتر، هر کدام با حداکثر حجم ۱۰ مگابایت. تکه‌های حاصل در پوشه خروجی مشخص شده با پیشوند "chunk_" ذخیره می‌شوند.

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