Birden çok ZIP arşivinin başka bir ZIP içinde kapsüllendiği senaryoyla sık sık karşılaşıyoruz. Bu gibi durumlarda, önce ana ZIP’i ve ardından iç içe geçmiş arşivleri tek tek çıkarmanız gerekir. İşinizi kolaylaştırmak için bu makalede, karmaşık kod yazmadan C# .NET’te iç içe geçmiş ZIP arşivlerinin nasıl çıkarılacağını göstereceğiz.
İç İçe ZIP Arşivlerini Çıkarmak için C# .NET API
Yuvalanmış ZIP arşivlerini açmak için Aspose.ZIP for .NET kullanacağız. API, .NET uygulamalarının içinden arşivleme işlemleri gerçekleştirmek için tasarlanmıştır. Popüler arşiv biçimlerini sorunsuz bir şekilde oluşturmanıza ve değiştirmenize olanak tanır. API’nin DLL’sini indirebilir veya NuGet kullanarak yükleyebilirsiniz.
PM> Install-Package Aspose.Zip
İç İçe ZIP Arşivlerini C# ile Çıkarın
İç içe geçmiş ZIP arşivlerinin çıkarılmasını göstermek için 3 giriş içeren aşağıdaki ZIP dosyasını oluşturduk.
İç içe geçmiş her bir ZIP arşivini çıkaracağız ve içeriğini ayrı bir klasöre kaydedeceğiz. Aşağıda, C# dilinde iç içe geçmiş ZIP arşivlerini ayıklama adımları yer almaktadır.
- Önce, ZIP dosyasını yüklemek için bir FileStream nesnesi oluşturun.
- Ardından, Archive sınıfını kullanarak ZIP dosyasını yükleyin.
- Archive.Entries koleksiyonundaki her ArchiveEntry üzerinde yineleme yapın.
- Koleksiyondaki ZIP arşivlerini filtreleyin ve her arşiv için aşağıdaki adımları uygulayın:
- Bir MemoryStream nesnesi oluşturun ve ArchiveEntry.Open().CopyTo(Stream) yöntemini kullanarak arşiv girişini buna kopyalayın.
- Yuvalanmış arşivi yüklemek için bir Archive sınıfı örneği oluşturun.
- Son olarak, Archive.ExtractToDirectory(string) yöntemini kullanarak arşivi bir klasöre çıkarın.
Aşağıdaki kod örneği, C# .NET’te iç içe geçmiş ZIP arşivlerinin nasıl açılacağını gösterir.
// ZIP dosyasını bir dosya akışında açın
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
// Archive sınıfını kullanarak ZIP dosyasını yükleyin
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// ZIP arşivindeki her girişe erişin
foreach(ArchiveEntry entry in archive.Entries)
{
if(entry.Name.ToLower().Contains(".zip"))
{
// Yuvalanmış arşiv için bellek akışı oluştur
MemoryStream nestedArchiveStream = new MemoryStream();
// Arşivi bellek akışına kopyala
entry.Open().CopyTo(nestedArchiveStream);
// İç içe geçmiş arşivi bellek akışından yükleyin
using (var nestedArchive = new Archive(nestedArchiveStream))
{
// Arşivi diske çıkarın.
nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
}
}
}
}
}
Çıkartılan ZIP arşivlerinin ekran görüntüsü aşağıdadır.
Ücretsiz API Lisansı Alın
Aspose.ZIP for .NET’i değerlendirme sınırlamaları olmadan kullanmak için ücretsiz bir geçici lisans alabilirsiniz.
Çözüm
Bu makalede, C#’ta iç içe ZIP arşivlerini nasıl çıkaracağınızı öğrendiniz. Adım adım kılavuz ve kod örneği, iç içe geçmiş her bir arşivin ayrı bir klasöre nasıl açılacağını göstermiştir. Ayrıca, Aspose.ZIP for .NET’in diğer özelliklerini keşfetmek için documentation adresini ziyaret edebilirsiniz. Ayrıca sorularınızı forumumuz aracılığıyla da sorabilirsiniz.