Разделяне на 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 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);
}