การแยกไฟล์ MBOX

แยกที่จัดเก็บ MBOX/ยกเลิกการแยกส่วน

Aspose.Email มีเมธอดสำหรับแบ่งไฟล์กล่องจดหมายขนาดใหญ่เป็นส่วนที่จัดการได้ วิธีนี้ช่วยปรับปรุงประสิทธิภาพและการใช้หน่วยความจำ โดยเฉพาะเมื่อทำงานกับอาร์ไคฟ์อีเมลขนาดใหญ่ ตัวเลือกการแบ่งที่มีอยู่จะแตกต่างกันตามเวอร์ชัน .NET ที่คุณใช้

API ที่รองรับตามเวอร์ชัน .NET

สำหรับ .NET Framework 4.5 และ .NET Core

คุณสามารถแบ่งข้อมูล MBOX โดยใช้ SplitInto เมธอดของ MboxStorageReader คลาส พร้อมตัวเลือกในการรวม cancellation token หรือกำหนดชื่อไฟล์ผลลัพธ์เอง:

พารามิเตอร์:

  • chunkSize: ขนาดโดยประมาณของแต่ละส่วนเป็นไบต์
  • outputPath: เส้นทางโฟลเดอร์ที่ส่วนข้อมูลจะถูกสร้าง
  • partFileNamePrefix: คำนำหน้าที่จะถูกเพิ่มเข้าไปในชื่อไฟล์ของแต่ละส่วน
  • token: CancellationToken ที่อนุญาตให้สามารถยกเลิกการทำงานได้

สำหรับ .NET เวอร์ชันต่ำกว่า 4.5

เวอร์ชันก่อนหน้ารองรับเดียวกัน SplitInto เมธอดแต่ไม่มี token สำหรับการยกเลิก:

ตัวอย่างโค้ดสำหรับการแยกแบบควบคุมพร้อมการยกเลิก

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแยกอาร์ไคฟ์เป็นสูงสุด 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 สำหรับ .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);
}