Create a Flat ZIP Archive in C#

บทนำ

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

ทำไมต้องสร้าง ZIP แบน?

การสร้างไฟล์ ZIP แบนมีข้อดีหลายประการ:

  • ทำให้การจัดการไฟล์ ZIP ง่ายขึ้น: ลดความซับซ้อนเมื่อจัดการกับหลายไฟล์
  • แยกเนื้อหา ZIP ที่ซ้อนทั้งหมดไปยังไฟล์บีบอัดเดียว: รวมไฟล์เพื่อให้เข้าถึงได้ง่ายขึ้น
  • ลดโครงสร้างโฟลเดอร์ที่ซ้ำซ้อน: ทำให้การจัดระเบียบไฟล์มีประสิทธิภาพมากขึ้น

สารบัญ

  1. การตั้งค่าการประมวลผลไฟล์ ZIP ใน C#
  2. ขั้นตอนในการสร้างไฟล์ ZIP แบน
  3. การบันทึกไฟล์ ZIP ที่ทำให้แบน
  4. การประมวลผลไฟล์ ZIP หลายไฟล์ในครั้งเดียว
  5. การขอใบอนุญาต API ฟรี
  6. บทสรุปและแหล่งข้อมูลเพิ่มเติม

1. การตั้งค่าการประมวลผลไฟล์ ZIP ใน C#

เพื่อประมวลผล ไฟล์ ZIP ที่ซ้อน อย่างมีประสิทธิภาพ เราจะใช้ Aspose.ZIP สำหรับ .NET ไลบรารีที่ทรงพลังนี้มี:

  • การแยก ZIP และการบีบอัดใหม่โดยอัตโนมัติ
  • การสนับสนุนหลายรูปแบบไฟล์บีบอัด: ZIP, TAR, GZip และอื่นๆ
  • การประมวลผล ไฟล์บีบอัดขนาดใหญ่ที่มีประสิทธิภาพ

การติดตั้ง

คุณสามารถติดตั้งไลบรารีได้อย่างง่ายดายผ่าน NuGet:

PM> Install-Package Aspose.Zip

หรือคุณสามารถดาวน์โหลด DLL จาก Aspose Downloads Page.


2. ขั้นตอนในการสร้างไฟล์ ZIP แบน

พิจารณา โครงสร้าง ZIP ที่ซ้อน ต่อไปนี้:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ file1.exe
 │ └ data.bin
 └ picture.gif

หลังจากทำให้แบน เนื้อหา ZIP ภายในทั้งหมดจะถูกรวมไว้ใน ZIP หลัก:

flattened.zip
 ├ first.txt
 ├ picture.gif
 ├ file1.exe
 └ data.bin

ตัวอย่างโค้ด

นี่คือวิธีที่คุณสามารถทำให้การแยกไฟล์ ZIP ที่ซ้อนได้โดยอัตโนมัติ:

// โหลดไฟล์ ZIP หลัก
using (Archive parentZip = new Archive("parent.zip"))
{
    List<ArchiveEntry> toDelete = new List<ArchiveEntry>();
    List<string> newEntryNames = new List<string>();
    List<MemoryStream> newStreams = new List<MemoryStream>();

    foreach (ArchiveEntry entry in parentZip.Entries)
    {
        if (entry.Name.EndsWith(".zip", StringComparison.OrdinalIgnoreCase))
        {
            toDelete.Add(entry);
            using (MemoryStream zipStream = new MemoryStream())
            {
                entry.Open().CopyTo(zipStream);
                zipStream.Position = 0;
                using (Archive innerZip = new Archive(zipStream))
                {
                    foreach (ArchiveEntry innerEntry in innerZip.Entries)
                    {
                        using (MemoryStream entryStream = new MemoryStream())
                        {
                            innerEntry.Open().CopyTo(entryStream);
                            newEntryNames.Add(innerEntry.Name);
                            newStreams.Add(entryStream);
                        }
                    }
                }
            }
        }
    }

    foreach (var entry in toDelete)
        parentZip.DeleteEntry(entry);

    for (int i = 0; i < newEntryNames.Count; i++)
        parentZip.CreateEntry(newEntryNames[i], newStreams[i]);

    parentZip.Save("flattened.zip");
}

วิธีนี้ทำให้การ แยกไฟล์ ZIP ที่ซ้อนได้โดยอัตโนมัติ ทำให้การทำงานเป็นไปอย่างราบรื่น


3. การบันทึกไฟล์ ZIP ที่ทำให้แบน

เมื่อคุณได้แยกเนื้อหา ZIP ที่ซ้อนแล้ว ให้บันทึกไฟล์ ZIP ที่ทำให้แบนโดยใช้บรรทัดโค้ดต่อไปนี้:

parentZip.Save("flattened.zip");

สิ่งนี้จะทำให้คุณมี ไฟล์ ZIP เดียวที่ไม่มีโฟลเดอร์ซ้อน ทำให้การจัดการไฟล์ง่ายขึ้นมาก


4. การประมวลผลไฟล์ ZIP หลายไฟล์ในครั้งเดียว

หากคุณต้องการ ทำให้แบนไฟล์ ZIP หลายไฟล์ ที่อยู่ในโฟลเดอร์เฉพาะ คุณสามารถใช้ตัวอย่างโค้ดต่อไปนี้:

string[] files = Directory.GetFiles("zip_folder", "*.zip");
foreach (string file in files)
{
    using (Archive archive = new Archive(file))
    {
        archive.ExtractToDirectory("output_folder");
    }
}

วิธีนี้ช่วยให้คุณ ประมวลผลไฟล์ ZIP จำนวนมากโดยอัตโนมัติ ประหยัดเวลาและความพยายาม


5. การขอใบอนุญาต API ฟรี

เพื่อปลดล็อก ฟีเจอร์ทั้งหมดของ Aspose.ZIP คุณสามารถขอ ใบอนุญาตชั่วคราวฟรี

สำหรับเอกสารประกอบที่ครอบคลุม โปรดเยี่ยมชม Aspose.ZIP Guide หากคุณมีคำถามใดๆ สามารถเข้าร่วมกับชุมชนได้ที่ Aspose forum


6. บทสรุปและแหล่งข้อมูลเพิ่มเติม

สรุป

ในคู่มือนี้เราได้ครอบคลุม:

วิธีการทำให้ไฟล์ ZIP แบนใน C#
การแยกไฟล์ ZIP ที่ซ้อน
การบันทึกไฟล์ ZIP สุดท้าย
การประมวลผลไฟล์ ZIP หลายไฟล์ในครั้งเดียว

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