Membagi File MBOX
Bagi Penyimpanan MBOX/Batalkan Operasi Pembagian
Aspose.Email menyediakan metode untuk membagi file kotak surat besar menjadi potongan yang dapat dikelola. Ini membantu meningkatkan kinerja dan efisiensi memori, terutama saat bekerja dengan arsip email yang luas. Pilihan pemisahan yang tersedia bervariasi tergantung pada versi .NET yang Anda gunakan.
API yang Didukung per Versi .NET
Untuk .NET Framework 4.5 dan .NET Core
Anda dapat membagi data MBOX menggunakan SplitInto metode dari MboxStorageReader kelas, dengan opsi untuk menyertakan token pembatalan atau menyesuaikan penamaan file output:
-
SplitInto(long chunkSize, string outputPath, CancellationToken token)
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix, CancellationToken token)
Parameter:
- chunkSize: Ukuran perkiraan setiap chunk dalam byte.
- outputPath: Jalur folder tempat potongan (chunks) akan dibuat.
- partFileNamePrefix: Awalan yang akan ditambahkan ke nama file setiap bagian.
- token: Sebuah CancellationToken yang memungkinkan kemungkinan pembatalan operasi.
Untuk Versi .NET Di Bawah 4.5
Versi sebelumnya mendukung hal yang sama SplitInto metode tetapi tanpa token pembatalan:
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix)
-
Cancel() - Digunakan untuk menginterupsi proses pemisahan di tengah jalan.
Contoh Kode untuk Pemisahan Terkontrol dengan Pembatalan
Contoh kode berikut menunjukkan cara membagi arsip menjadi hingga 5 bagian, secara otomatis membatalkan operasi setelahnya:
.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();
Di Bawah .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();
};
Membagi File MBOX Besar Secara Asinkron
Bekerja dengan arsip email besar dapat tidak efisien dan memakan memori banyak. Untuk meningkatkan kinerja dan kemampuan pengelolaan, Aspose.Email untuk .NET menyediakan asinkron SplitIntoAsync metode, yang memungkinkan Anda membagi file besar menjadi potongan lebih kecil - tanpa memblokir thread utama. Contoh kode di bawah ini menunjukkan cara menggunakan MboxStorageReader.CreateReaderAsync untuk membuka file MBOX besar secara asinkron dan kemudian memanggil SplitIntoAsync untuk membaginya menjadi file lebih kecil, masing-masing dengan ukuran maksimum 10 MB. Potongan yang dihasilkan disimpan ke direktori output yang ditentukan menggunakan awalan "chunk_".
using (var reader = await MboxStorageReader.CreateReaderAsync("input.mbox", new MboxLoadOptions()))
{
await reader.SplitIntoAsync(10 * 1024 * 1024, "outputDirectory", "chunk_", CancellationToken.None);
}