สร้าง Flat ZIP Archive ใน C#

เมื่อจัดการกับ ZIP archives คุณอาจพบสถานการณ์ที่ ZIP file มี ZIP files อื่นอยู่ภายใน ทำให้เกิดโครงสร้างที่ซ้อนกัน หากเป้าหมายของคุณคือการทำให้มันเรียบง่ายโดยการดึง ZIP archives ภายในทั้งหมดออกมาใส่ใน ZIP archive ภายนอก คุณมาถูกที่แล้ว ในบทความนี้เราจะสำรวจ วิธีการสร้าง flat ZIP archive ใน C# โดยใช้ Aspose.ZIP for .NET

สารบัญ

ภาพรวมของ .NET API ในการสร้าง Flat ZIP Archives

ในการสร้าง flat ZIP archives เราจะใช้ Aspose.ZIP for .NET ไลบรารี API การจัดเก็บข้อมูลที่มีประสิทธิภาพนี้ช่วยให้คุณสามารถสร้างและดึงรูปแบบ archive ต่างๆ รวมถึง ZIP, TAR, GZip, และ 7z คุณสามารถติดตั้งไลบรารีนี้ได้ง่ายๆ จาก NuGet หรือดาวน์โหลด DLL จาก ส่วนดาวน์โหลด

PM> Install-Package Aspose.Zip

ขั้นตอนในการสร้าง Flat ZIP Archive ใน C#

เพื่อให้เข้าใจโครงสร้างของ flat ZIP archive ได้ดียิ่งขึ้น ลองพิจารณาตัวอย่างต่อไปนี้ ในตอนแรกเรามี ZIP archive ที่มี ZIP archive อื่นอยู่ภายใน:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ game.exe
 │ └ subitem.bin
 └ picture.gif

หลังจากการแปลง ZIP archive นี้ให้เป็นโครงสร้างแบน รายการทั้งหมดจาก inner ZIP จะถูกดึงออกมาใส่ใน parent ZIP ทำให้เกิดโครงสร้างดังนี้:

flatten.zip
 ├ first.txt
 ├ picture.gif
 ├ game.exe
 └ subitem.bin

ขั้นตอนการดำเนินการ

นี่คือวิธีการสร้าง flat ZIP archive ใน C# อย่างมีโปรแกรม:

  1. โหลด Parent ZIP Archive: ใช้คลาส Archive เพื่อโหลด parent ZIP
  2. สร้างรายการ: สร้างรายการเพื่อเก็บ:
    • รายการที่ต้องลบจาก parent ZIP
    • รายการที่ถูกดึงออกและชื่อของพวกเขา
  3. วนรอบผ่าน Archive Entries: วนรอบแต่ละ ArchiveEntry ใน parent ZIP โดยใช้คอลเลกชัน Archive.Entries
  4. ประมวลผลแต่ละ Entry:
    • ตรวจสอบว่า entry เป็น ZIP archive โดยใช้ ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)
    • หากใช่ ให้เพิ่มมันลงในรายการของ entries ที่จะลบ
    • เปิด entry ลงในวัตถุ MemoryStream โดยใช้ ArchiveEntry.Open().CopyTo(MemoryStream)
    • วนรอบผ่าน entries ของ inner ZIP archive ทำดังนี้:
      • เพิ่มชื่อของแต่ละ entry ลงในรายการ entries ที่จะเพิ่ม
      • โหลดแต่ละ entry ลงใน MemoryStream โดยใช้ ArchiveEntry.Open().CopyTo(MemoryStream)
      • เพิ่ม entry ลงในรายการ entries ที่จะเพิ่มไปยัง parent ZIP
  5. ลบ Inner ZIP Entries: วนรอบผ่านรายการของ inner ZIP archives และลบแต่ละ entry โดยใช้ Archive.DeleteEntry(ArchiveEntry) เมธอด
  6. เพิ่ม New Entries ลงใน Parent ZIP: วนรอบผ่านรายการของ entries ที่จะเพิ่มและรวมแต่ละ entry โดยใช้ Archive.CreateEntry(String, Stream) เมธอด
  7. บันทึก Parent ZIP Archive: สุดท้าย บันทึก parent ZIP archive ที่แก้ไขโดยใช้ Archive.Save(String) เมธอด

นี่คือตัวอย่างโค้ดที่แสดงวิธีการสร้าง flat ZIP archive ใน C#:

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

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

บทสรุป

ในบทเรียนนี้ คุณได้เรียนรู้วิธีการสร้าง flat ZIP archive อย่างมีประสิทธิภาพโดยใช้ C# เราได้แสดงกระบวนการดึง inner ZIP archives ออกมาใส่ใน parent ZIP เพื่อหลีกเลี่ยงโฟลเดอร์ที่ซ้อนกัน สำหรับข้อมูลเพิ่มเติม โปรดตรวจสอบ Aspose.ZIP for .NET documentation หรือ ติดต่อเราผ่าน ฟอรัม

ดูเพิ่มเติม

โดยการทำตามขั้นตอนเหล่านี้ คุณสามารถนำ C# flat zip file compression ไปใช้ในแอปพลิเคชันของคุณได้อย่างง่ายดาย โดยมั่นใจได้ว่าจะมี single file zip archive ที่มีประสิทธิภาพและจัดการง่าย