División de archivos MBOX

Dividir almacenamiento MBOX/Cancelar operación de división

Aspose.Email ofrece métodos para dividir archivos de buzón grandes en fragmentos manejables. Esto ayuda a mejorar el rendimiento y la eficiencia de memoria, especialmente al trabajar con archivos extensos de correo. Las opciones de división disponibles varían según la versión de .NET que esté usando.

APIs compatibles por versión de .NET

Para .NET Framework 4.5 y .NET Core

Puede segmentar datos MBOX usando el SplitInto método del MboxStorageReader clase, con la opción de incluir un token de cancelación o personalizar el nombre del archivo de salida:

Parámetros:

  • chunkSize: El tamaño aproximado de cada fragmento en bytes.
  • outputPath: La ruta de carpeta donde se crearán los fragmentos.
  • partFileNamePrefix: El prefijo que se añadirá al nombre de archivo de cada parte.
  • token: Un CancellationToken que permite la posible cancelación de la operación.

Para versiones de .NET inferiores a 4.5

Las versiones anteriores admiten lo mismo SplitInto método pero sin tokens de cancelación:

Ejemplos de código para división controlada con cancelación

Los siguientes ejemplos de código demuestran cómo dividir un archivo en hasta 5 partes, cancelando automáticamente la operación posteriormente:

.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();

Por debajo de .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();
};

Dividir archivos MBOX grandes de forma asíncrona

Trabajar con archivos de correo electrónico grandes puede ser ineficiente y consumir mucha memoria. Para mejorar el rendimiento y la manejabilidad, Aspose.Email para .NET proporciona el asíncrono SplitIntoAsync método, que le permite dividir archivos grandes en fragmentos más pequeños, sin bloquear el hilo principal. El ejemplo de código a continuación muestra cómo usar MboxStorageReader.CreateReaderAsync para abrir un archivo MBOX grande de forma asíncrona y luego llamar a SplitIntoAsync para dividirlo en archivos más pequeños, cada uno con un tamaño máximo de 10 MB. Los fragmentos resultantes se guardan en el directorio de salida especificado usando el prefijo "chunk_".

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