เรามักจะเจอสถานการณ์ที่ไฟล์เก็บถาวร 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 ที่ซ้อนกัน

เราจะแตกไฟล์ 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 ที่แยกออกมา

แยกไฟล์เก็บถาวร ZIP ที่ซ้อนกันใน C# .NET

คลายไฟล์เก็บถาวรที่ซ้อนกัน

รับใบอนุญาต API ฟรี

คุณสามารถรับ ใบอนุญาตชั่วคราวฟรี เพื่อใช้ Aspose.ZIP for .NET โดยไม่มีข้อจำกัดในการประเมิน

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีแตกไฟล์ ZIP ที่ซ้อนกันใน C# คำแนะนำทีละขั้นตอนและตัวอย่างโค้ดได้สาธิตวิธีแตกไฟล์เก็บถาวรที่ซ้อนกันแต่ละรายการลงในโฟลเดอร์แยกต่างหาก นอกจากนี้ คุณสามารถไปที่ เอกสาร เพื่อสำรวจคุณลักษณะอื่นๆ ของ Aspose.ZIP for .NET นอกจากนี้ คุณสามารถถามคำถามผ่าน ฟอรัม ของเรา

ดูสิ่งนี้ด้วย