ZIP arşivleri, bir veya daha fazla dosya veya klasörü sıkıştırmak ve tek bir kapta tutmak için kullanılır. Bir ZIP arşivi, dosyaları ve klasörleri kapsüller ve bunların meta veri bilgilerini tutar. Arşivlemenin en yaygın kullanımı, depolama veya iletim için dosyaların boyutunu küçültmek ve güvenlik için şifreleme uygulamaktır. Dosya sıkıştırma araçlarının yanı sıra, dosyaları karşıya yüklemek, indirmek, paylaşmak veya şifrelemek için çeşitli masaüstü ve web uygulamalarında otomatik sıkıştırma/çıkarma özellikleri de kullanılır. Bu makale ayrıca benzer senaryoları hedeflemektedir ve dosya veya klasörleri sıkıştırmanın ve C# kullanarak programlı olarak ZIP arşivleri oluşturmanın bazı kolay yollarını sunar.
Bu yazıda, aşağıdaki ZIP arşivleme işlemlerini nasıl yapacağınızı öğreneceksiniz:
- C# kullanarak bir ZIP arşivi oluşturun
- Bir ZIP arşivine birden fazla dosya ekleyin
- ZIP arşivine klasör ekleme
- ZipCrypto kullanarak parola korumalı bir ZIP arşivi oluşturun
- ZIP arşivini AES şifrelemesi ile şifreleyin
- Paralel sıkıştırma modunu ayarla
C# ZIP Kitaplığı
Aspose.ZIP for .NET, .NET uygulamaları içindeki dosya ve klasörleri sıkıştırmak veya açmak için güçlü ve kullanımı kolay bir API’dir. Ayrıca ZIP’deki dosyaları C# dilinde şifrelemek için AES şifreleme teknikleri sağlar. API’yi NuGet’ten yükleyebilir veya ikili dosyalarını İndirilenler bölümünden indirebilirsiniz.
C# ile ZIP Arşivi Oluşturma
Bir dosyayı ZIP arşivine ekleyerek sıkıştırmak için izlenecek adımlar şunlardır:
- Çıkış ZIP arşivi için bir FileStream nesnesi oluşturun.
- Kaynak dosyayı bir FileStream nesnesinde açın.
- Archive sınıfından bir nesne oluşturun.
- Archive.CreateEntry(string, FileStream) yöntemini kullanarak dosyayı arşive ekleyin.
- Archive.Save(FileStream) yöntemini kullanarak ZIP arşivini oluşturun.
Aşağıdaki kod örneği, C# kullanarak bir ZIP arşivine nasıl dosya ekleneceğini gösterir.
// Çıktı ZIP arşivi için FileStream oluşturun
using (FileStream zipFile = File.Open("compressed_file.zip", FileMode.Create))
{
// Arşive eklenecek dosya
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings()))
{
// Arşive dosya ekle
archive.CreateEntry("alice29.txt", source1);
// sıkıştırılmış dosya
archive.Save(zipFile);
}
}
}
C# ile ZIP Arşivine Birden Fazla Dosya Ekleme
Bir ZIP arşivine birden çok dosya eklemek isterseniz, bunu aşağıdaki yollardan birini kullanarak yapabilirsiniz.
FileStream kullanarak C# ZIP Çoklu Dosyaları
Bu yöntemde FileStream sınıfı, Archive.CreateEntry(String, FileStream) yöntemini kullanarak ZIP arşivine dosya eklemek için kullanılır. Aşağıdaki kod örneği, C# dilinde bir ZIP dosyasına birden çok dosyanın nasıl ekleneceğini gösterir.
// Çıktı ZIP arşivi için FileStream oluşturun
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
// Arşive eklenecek dosya
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
// Arşive eklenecek dosya
using (FileStream source2 = File.Open("asyoulike.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
// Arşive dosya ekle
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik3.txt", source2);
// dosyaları sıkıştır
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "two files are compressed in this archive" });
}
}
}
}
FileInfo kullanarak C# ZIP Çoklu Dosyalar
Bir ZIP arşivine birden çok dosya eklemek için FileInfo sınıfını da kullanabilirsiniz. Bu yöntemde dosyalar FileInfo sınıfı kullanılarak yüklenecek ve Archive.CreateEntry(String, FileInfo) yöntemi kullanılarak ZIP arşivine eklenecektir. Aşağıdaki kod örneği, C# dilinde FileInfo sınıfını kullanarak birden çok dosyayı ZIP ile nasıl sıkıştıracağınızı gösterir.
// Çıktı ZIP arşivi için FileStream oluşturun
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
// Arşive eklenecek dosyalar
FileInfo fi1 = new FileInfo("alice29.txt");
FileInfo fi2 = new FileInfo("fields.c");
using (var archive = new Archive())
{
// Arşive dosya ekle
archive.CreateEntry("alice29.txt", fi1);
archive.CreateEntry("fields.c", fi2);
// ZIP arşivi oluştur
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
}
Yolu Kullanan ZIP Dosyaları
ZIP girişleri için FileInfo veya FileStream sınıflarını kullanmak yerine, dosyanın yolunu doğrudan Archive.CreateEntry(String name, String path, Boolean openImmediately, ArchiveEntrySettings newEntrySettings) yöntemine sağlayabilirsiniz. Aşağıdaki kod örneği, dosyaların yollarını kullanarak nasıl ZIP yapılacağını gösterir.
// Çıktı ZIP arşivi için FileStream oluşturun
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
// Arşiv oluştur
using (var archive = new Archive())
{
// ZIP arşivine dosya ekle
archive.CreateEntry("data.bin", "file.dat");
archive.Save(zipFile);
}
}
C# ile ZIP Arşivine Klasör Ekleme
ZIP arşivine birden çok dosya eklemenin başka bir alternatifi olabilecek C# ZIP kitaplığıyla bir klasörü ZIP yapabilirsiniz. Kaynak dosyaları bir klasöre koyun ve bu klasörü ZIP arşivine ekleyin. Aşağıda, C# dilinde bir klasörü ZIP işlemine tabi tutma adımları yer almaktadır:
- Çıkış ZIP arşivi için FileStream sınıfından bir nesne oluşturun.
- Archive sınıfının bir örneğini oluşturun.
- Sıkıştırılacak klasörü belirtmek için DirectoryInfo sınıfını kullanın.
- ZIP’e klasör eklemek için Archive.CreateEntries(DirectoryInfo) yöntemini kullanın.
- Archive.Save(FileStream) yöntemini kullanarak ZIP arşivini oluşturun.
Aşağıdaki kod örneği, C# dilinde ZIP dosyasına nasıl klasör ekleneceğini gösterir.
// Çıktı ZIP arşivi için FileStream oluşturun
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive())
{
// Sıkıştırılacak Klasör
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// ZIP arşivi oluştur
archive.Save(zipFile);
}
}
C# dilinde ZipCrypto kullanarak Parola Korumalı ZIP oluşturun
ZIP arşivlerini parola kullanarak koruyabilir ve ZipCrypto şifrelemesi uygulayabilirsiniz. Bunun için şifreleme türünü ikinci parametre olarak kabul eden Archive yapıcısında ArchiveEntrySettings sınıfı kullanılır.
Aşağıdaki kod örneği, C# dilinde ZipCrypto kullanarak parola korumalı bir ZIP arşivinin nasıl oluşturulacağını gösterir.
// Çıktı ZIP arşivi için FileStream oluşturun
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$"))))
{
// Arşive klasör ekle
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// ZIP arşivi oluştur
archive.Save(zipFile);
}
}
C# AES Şifrelemesi ile Parola Korumalı ZIP Oluşturma
Aspose.ZIP for .NET, ZIP arşivlerini korumak için AES şifrelemesi uygulamanıza da izin verir. Aşağıdaki AES şifreleme yöntemlerini kullanabilirsiniz:
- AES128
- AES192
- AES256
AES şifrelemesini uygulamak için API, AesEcryptionSettings sınıfını sunar. Aşağıdaki kod örneği, C# dilinde AES şifrelemesi ile parola korumalı bir ZIP’in nasıl oluşturulacağını gösterir.
// Çıktı ZIP arşivi için FileStream oluşturun
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
{
// Arşive klasör ekle
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// ZIP arşivi oluştur
archive.Save(zipFile);
}
}
Paralel Sıkıştırma Modunu Ayarla
Birden çok giriş olması durumunda API’yi paralel sıkıştırma için de yapılandırabilirsiniz. Bunun için ParallelOptions sınıfını kullanarak paralel sıkıştırma modunu belirleyebilirsiniz. Aspose.ZIP for .NET aşağıdaki paralel sıkıştırma modlarını sağlar.
- Asla - Paralel olarak sıkıştırmayın.
- Her Zaman - Paralel olarak sıkıştırın (belleğin yetersiz olmasına dikkat edin).
- Otomatik - Girişlerde paralel sıkıştırmanın kullanılıp kullanılmayacağına karar verin. Bu seçenek bazı girdileri yalnızca paralel olarak sıkıştırabilir.
Aşağıdaki kod örneği, Aspose’un C# ZIP kitaplığıyla birden fazla dosyayı sıkıştırırken paralel sıkıştırma modunun nasıl ayarlanacağını gösterir.
// Eksiksiz örnekler ve veri dosyaları için lütfen https://github.com/aspose-Zip/Aspose.ZIP-for-.NET adresine gidin.
using (FileStream zipFile = File.Open(dataDir + "UsingParallelismToCompressFiles_out.zip", FileMode.Create))
{
using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
{
using (FileStream source2 = File.Open(dataDir + "asyoulik.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2);
//Paralellik kriterini tanımlayın
var parallelOptions = new ParallelOptions
{
ParallelCompressInMemory = ParallelCompressionMode.Always
};
archive.Save(zipFile,
new ArchiveSaveOptions()
{
ParallelOptions = parallelOptions,
Encoding = Encoding.ASCII,
ArchiveComment = "There are two poems from Canterbury corpus"
});
}
}
}
}
C# .NET ZIP Kitaplığı Hakkında Daha Fazla Bilgi Edinin
Aşağıdaki kaynakları kullanarak C# ZIP API’miz hakkında daha fazlasını keşfedin:
ZIP Arşivlerini Çevrimiçi Yapın
Dosyaları ZIP arşivlerine sıkıştırmak için Aspose.ZIP for .NET tabanlı ücretsiz çevrimiçi uygulamamızı de deneyebilirsiniz.
Çözüm
Bu makalede, C# dilinde programlı olarak ZIP arşivleri oluşturmayı öğrendiniz. Kod örnekleri, ZIP arşivlerine dosya ve klasörlerin nasıl ekleneceğini göstermiştir. Ayrıca, C# Aspose’ ZIP kitaplığı kullanılarak ZipCrypto ve AES şifreleme yöntemleriyle parola korumalı ZIP arşivlerinin nasıl oluşturulacağını da ele aldık. Ayrıca, birden fazla girişin paralel olarak sıkıştırılması da sonunda tartışılmaktadır. Herhangi bir sorunuz veya sorunuz olması durumunda forumumuz aracılığıyla bize sorabilirsiniz.