Разделяне на 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 метод, но без токени за отменяне:

Примерен код за контролирано разделяне с отменяне

Следните примерни кодове демонстрират как да разделите архив на до 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 MB. Получените части се записват в указаната изходна директория с представка „chunk_“.

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