Розділення файлів 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 для .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);
}