Dela upp MBOX-filer
Dela MBOX-lagring/Avbryt delningsoperation
Aspose.Email erbjuder metoder för att dela stora brevlådefiler i hanterbara delar. Detta hjälper till att förbättra prestanda och minneseffektivitet, särskilt när du arbetar med omfattande e‑postarkiv. De tillgängliga delningsalternativen varierar beroende på vilken .NET-version du använder.
Stödda APIer per .NET-version
För .NET Framework 4.5 och .NET Core
Du kan segmentera MBOX-data med hjälp av SplitInto metod för MboxStorageReader klass, med möjlighet att inkludera en avboknings‑token eller anpassa filnamngivningen för utdata:
-
SplitInto(long chunkSize, string outputPath, CancellationToken token)
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix, CancellationToken token)
Parametrar:
- chunkSize: Den ungefärliga storleken på varje del i byte.
- outputPath: Mappvägen där delarna kommer att skapas.
- partFileNamePrefix: Prefixet som ska läggas till filnamnet för varje del.
- token: En CancellationToken som möjliggör eventuell avbrytning av operationen.
För .NET-versioner under 4.5
Tidigare versioner stödjer samma SplitInto metod men utan avboknings‑tokens:
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix)
-
Cancel() – Används för att avbryta uppdelningsprocessen mitt i.
Kodexempel för kontrollerad uppdelning med avbokning
Följande kodexempel visar hur du delar ett arkiv i upp till 5 delar, med automatisk avbokning av operationen därefter:
.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();
Under .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();
};
Dela upp stora MBOX-filer asynkront
Att arbeta med stora e‑postarkiv kan vara ineffektivt och minneskrävande. För att förbättra prestanda och hanterbarhet erbjuder Aspose.Email för .NET den asynkrona SplitIntoAsync metod, som låter dig dela stora filer i mindre delar – utan att blockera huvudtråden. Kodexemplet nedan visar hur du använder MboxStorageReader.CreateReaderAsync för att öppna en stor MBOX-fil asynkront och sedan anropa SplitIntoAsync för att dela den i mindre filer, var och en med maxstorlek 10 MB. De resulterande delarna sparas i den angivna utdata katalogen med prefixet "chunk_".
using (var reader = await MboxStorageReader.CreateReaderAsync("input.mbox", new MboxLoadOptions()))
{
await reader.SplitIntoAsync(10 * 1024 * 1024, "outputDirectory", "chunk_", CancellationToken.None);
}