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

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

สารบัญ

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

ในการสร้าง Flat ZIP archives เราจะใช้ Aspose.ZIP สำหรับ .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: วนรอบผ่านแต่ละ ArchiveEntry ใน parent ZIP โดยใช้คอลเลกชัน Archive.Entries
  4. ประมวลผลแต่ละรายการ:
    • ตรวจสอบว่ารายการนั้นเป็น ZIP archive โดยใช้ ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)
    • หากใช่ ให้เพิ่มมันลงในรายการที่ต้องลบ
    • เปิดรายการลงในอ็อบเจ็กต์ MemoryStream โดยใช้ ArchiveEntry.Open().CopyTo(MemoryStream)
    • วนรอบผ่านรายการของ inner ZIP archive โดยทำดังนี้:
      • เพิ่มชื่อของแต่ละรายการลงในรายการที่ต้องเพิ่ม
      • โหลดแต่ละรายการลงใน MemoryStream โดยใช้ ArchiveEntry.Open().CopyTo(MemoryStream)
      • เพิ่มรายการลงในรายการที่ต้องเพิ่มใน parent ZIP
  5. ลบ Inner ZIP Entries: วนรอบผ่านรายการของ inner ZIP archives และลบแต่ละรายการโดยใช้ Archive.DeleteEntry(ArchiveEntry)
  6. เพิ่มรายการใหม่ลงใน Parent ZIP: วนรอบผ่านรายการของรายการที่จะเพิ่มและรวมแต่ละรายการโดยใช้ Archive.CreateEntry(String, Stream)
  7. บันทึก Parent ZIP Archive: สุดท้าย บันทึก parent ZIP archive ที่แก้ไขแล้วโดยใช้ Archive.Save(String)

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

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

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

บทสรุป

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

ดูเพิ่มเติม