Dividindo Arquivos MBOX

Dividir Armazenamento MBOX/Cancelar Operação de Divisão

Aspose.Email fornece métodos para dividir arquivos de caixa de correio grandes em blocos gerenciáveis. Isso ajuda a melhorar o desempenho e a eficiência de memória, especialmente ao trabalhar com arquivos extensos de e‑mail. As opções de divisão disponíveis variam de acordo com a versão .NET que você está usando.

APIs Suportadas por Versão .NET

Para .NET Framework 4.5 e .NET Core

Você pode segmentar os dados MBOX usando o SplitInto método do MboxStorageReader classe, com a opção de incluir um token de cancelamento ou personalizar a nomeação do arquivo de saída:

Parâmetros:

  • chunkSize: O tamanho aproximado de cada bloco em bytes.
  • outputPath: O caminho da pasta onde os blocos serão criados.
  • partFileNamePrefix: O prefixo a ser adicionado ao nome de arquivo de cada parte.
  • token: Um CancellationToken que permite o possível cancelamento da operação.

Para versões .NET abaixo de 4.5

Versões anteriores suportam o mesmo SplitInto método, mas sem tokens de cancelamento:

Exemplos de Código para Divisão Controlada com Cancelamento

Os exemplos de código a seguir demonstram como dividir um arquivo em até 5 partes, cancelando automaticamente a operação em seguida:

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

Abaixo do .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 Arquivos MBOX Grandes de Forma Assíncrona

Trabalhar com grandes arquivos de e‑mail pode ser ineficiente e consumir muita memória. Para melhorar o desempenho e a manejabilidade, Aspose.Email para .NET fornece o assíncrono SplitIntoAsync método, que permite dividir arquivos grandes em blocos menores - sem bloquear a thread principal. O exemplo de código abaixo mostra como usar MboxStorageReader.CreateReaderAsync para abrir um arquivo MBOX grande de forma assíncrona e então chamar SplitIntoAsync para dividi‑los em arquivos menores, cada um com tamanho máximo de 10 MB. Os blocos resultantes são salvos no diretório de saída especificado usando o prefixo "chunk_".

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