เรามักจะเจอสถานการณ์ที่ไฟล์เก็บถาวร ZIP หลายไฟล์ถูกห่อหุ้มไว้ในไฟล์ ZIP อื่น ในกรณีดังกล่าว ขั้นแรก คุณต้องแตกไฟล์ ZIP หลัก จากนั้นจึงแยกไฟล์เก็บถาวรที่ซ้อนกันทีละรายการ เพื่อให้คุณง่ายขึ้น ในบทความนี้ เราจะสาธิตวิธีแยกไฟล์ ZIP ที่ซ้อนกันใน C# .NET โดยไม่ต้องเขียนโค้ดที่ซับซ้อน
C# .NET API เพื่อแยกไฟล์เก็บถาวร ZIP ที่ซ้อนกัน
ในการแตกไฟล์ ZIP ที่ซ้อนกัน เราจะใช้ Aspose.ZIP for .NET API ได้รับการออกแบบมาเพื่อดำเนินการเก็บถาวรจากภายในแอปพลิเคชัน .NET ช่วยให้คุณสร้างและจัดการรูปแบบไฟล์เก็บถาวรยอดนิยมได้อย่างราบรื่น คุณสามารถ ดาวน์โหลด DLL ของ API หรือติดตั้งโดยใช้ NuGet
PM> Install-Package Aspose.Zip
แยกไฟล์เก็บถาวร ZIP ที่ซ้อนกันใน C
เพื่อสาธิตการแยกไฟล์ ZIP ที่ซ้อนกัน เราได้สร้างไฟล์ ZIP ต่อไปนี้ซึ่งมี 3 รายการ
เราจะแตกไฟล์ ZIP แต่ละไฟล์ที่ซ้อนกันและบันทึกเนื้อหาในโฟลเดอร์แยกต่างหาก ต่อไปนี้เป็นขั้นตอนในการแตกไฟล์ ZIP ที่ซ้อนกันใน C#
- ขั้นแรก สร้างวัตถุ FileStream เพื่อโหลดไฟล์ ZIP
- จากนั้น โหลดไฟล์ ZIP โดยใช้คลาส Archive
- วนซ้ำแต่ละ ArchiveEntry ในคอลเลกชัน Archive.Entries
- กรองไฟล์ ZIP ในคอลเล็กชันและสำหรับไฟล์เก็บถาวรแต่ละรายการ ให้ทำตามขั้นตอนต่อไปนี้:
- สร้างวัตถุ MemoryStream และคัดลอกรายการเก็บถาวรโดยใช้เมธอด ArchiveEntry.Open().CopyTo(Stream)
- สร้างอินสแตนซ์ของคลาส Archive เพื่อโหลดไฟล์เก็บถาวรที่ซ้อนกัน
- สุดท้าย แตกไฟล์เก็บถาวรลงในโฟลเดอร์โดยใช้เมธอด Archive.ExtractToDirectory(string)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแตกไฟล์ ZIP ที่ซ้อนกันใน C# .NET
// เปิดไฟล์ ZIP ในสตรีมไฟล์
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
// โหลดไฟล์ ZIP โดยใช้คลาส Archive
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// เข้าถึงแต่ละรายการในไฟล์ ZIP
foreach(ArchiveEntry entry in archive.Entries)
{
if(entry.Name.ToLower().Contains(".zip"))
{
// สร้างสตรีมหน่วยความจำสำหรับไฟล์เก็บถาวรที่ซ้อนกัน
MemoryStream nestedArchiveStream = new MemoryStream();
// คัดลอกไฟล์เก็บถาวรไปยังสตรีมหน่วยความจำ
entry.Open().CopyTo(nestedArchiveStream);
// โหลดไฟล์เก็บถาวรที่ซ้อนกันจากสตรีมหน่วยความจำ
using (var nestedArchive = new Archive(nestedArchiveStream))
{
// แยกไฟล์เก็บถาวรไปยังดิสก์
nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
}
}
}
}
}
ต่อไปนี้เป็นภาพหน้าจอของไฟล์ ZIP ที่แยกออกมา
รับใบอนุญาต API ฟรี
คุณสามารถรับ ใบอนุญาตชั่วคราวฟรี เพื่อใช้ Aspose.ZIP for .NET โดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ คุณได้เรียนรู้วิธีแตกไฟล์ ZIP ที่ซ้อนกันใน C# คำแนะนำทีละขั้นตอนและตัวอย่างโค้ดได้สาธิตวิธีแตกไฟล์เก็บถาวรที่ซ้อนกันแต่ละรายการลงในโฟลเดอร์แยกต่างหาก นอกจากนี้ คุณสามารถไปที่ เอกสาร เพื่อสำรวจคุณลักษณะอื่นๆ ของ Aspose.ZIP for .NET นอกจากนี้ คุณสามารถถามคำถามผ่าน ฟอรัม ของเรา