Розділення файлів MBOX
Розділити сховище MBOX/Скасувати операцію розділення
Aspose.Email надає методи для поділу великих файлів поштових скриньок на зручні частини. Це допомагає підвищити продуктивність та ефективність використання пам’яті, особливо при роботі з великими архівами електронної пошти. Доступні варіанти розділення залежать від версії .NET, яку ви використовуєте.
Підтримувані API згідно версії .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 для .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);
}