Kami sering menjumpai skenario di mana banyak arsip ZIP dienkapsulasi di dalam ZIP lain. Dalam kasus seperti itu, pertama-tama, Anda harus mengekstrak ZIP induk dan kemudian arsip bersarang satu per satu. Untuk mempermudah Anda, dalam artikel ini, kami akan menunjukkan cara mengekstrak arsip ZIP bersarang di C# .NET tanpa menulis kode yang rumit.
C# .NET API untuk Mengekstrak Arsip ZIP Bersarang
Untuk mengekstrak arsip ZIP bersarang, kami akan menggunakan Aspose.ZIP for .NET. API dirancang untuk melakukan operasi pengarsipan dari dalam aplikasi .NET. Ini memungkinkan Anda untuk membuat dan memanipulasi format arsip populer dengan mulus. Anda dapat mengunduh DLL API atau menginstalnya menggunakan NuGet.
PM> Install-Package Aspose.Zip
Ekstrak Arsip ZIP Bersarang di C#
Untuk mendemonstrasikan ekstraksi arsip ZIP bersarang, kami telah membuat file ZIP berikut yang berisi 3 entri.
Kami akan mengekstrak setiap arsip ZIP bersarang dan menyimpan kontennya di folder terpisah. Berikut ini adalah langkah-langkah untuk mengekstrak arsip ZIP bersarang di C#.
- Pertama, buat objek FileStream untuk memuat file ZIP.
- Kemudian, muat file ZIP menggunakan kelas Archive.
- Ulangi setiap koleksi ArchiveEntry di Archive.Entries.
- Saring arsip ZIP dalam koleksi dan untuk setiap arsip lakukan langkah-langkah berikut:
- Buat objek MemoryStream dan salin entri arsip ke dalamnya menggunakan metode ArchiveEntry.Open().CopyTo(Stream).
- Buat instance dari kelas Archive untuk memuat arsip bersarang.
- Terakhir, ekstrak arsip ke dalam folder menggunakan metode Archive.ExtractToDirectory(string).
Contoh kode berikut menunjukkan cara unzip arsip ZIP bersarang di C# .NET.
// Buka file ZIP dalam aliran file
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
// Muat file ZIP menggunakan kelas Arsip
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// Akses setiap entri dalam arsip ZIP
foreach(ArchiveEntry entry in archive.Entries)
{
if(entry.Name.ToLower().Contains(".zip"))
{
// Buat aliran memori untuk arsip bersarang
MemoryStream nestedArchiveStream = new MemoryStream();
// Salin arsip ke aliran memori
entry.Open().CopyTo(nestedArchiveStream);
// Muat arsip bersarang dari aliran memori
using (var nestedArchive = new Archive(nestedArchiveStream))
{
// Ekstrak arsip ke disk.
nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
}
}
}
}
}
Berikut ini adalah tangkapan layar dari arsip ZIP yang diekstrak.
Dapatkan Lisensi API Gratis
Anda bisa mendapatkan lisensi sementara gratis untuk menggunakan Aspose.ZIP for .NET tanpa batasan evaluasi.
Kesimpulan
Pada artikel ini, Anda telah mempelajari cara mengekstrak arsip ZIP bersarang di C#. Panduan langkah demi langkah dan contoh kode telah menunjukkan cara meng-unzip setiap arsip bersarang ke dalam folder terpisah. Selain itu, Anda dapat mengunjungi dokumentasi untuk menjelajahi fitur lain dari Aspose.ZIP for .NET. Selain itu, Anda dapat mengajukan pertanyaan melalui forum kami.