C# ile ZIP oluşturun

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# 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:

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:

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.

Ayrıca bakınız

C# Kullanarak Dosyaları Açın veya ÇıkarınC# kullanarak ZIP Arşivlerindeki Dosyaları AçınC# .NET’te 7z (7-Zip) Arşivleri Oluşturun
C# .NET’te 7z (7zip) Dosyasını Açın veya ÇıkarınC# kullanarak GZip Arşivleri Oluşturun ve ÇıkarınRAR Dosyalarını C# dilinde ZIP Arşivine Dönüştür
C# dilinde ZIP Arşivlerini TAR’a DönüştürC# dilinde Düz ZIP Arşivi OluşturunC# dilinde Yürütülebilir Kendiliğinden Açılan Arşiv Oluşturun
C# dilinde TAR.GZ ve TAR.XZ Dosyaları OluşturunC# dilinde bir ZIP Arşivindeki Dosyaları Silinİç İçe ZIP Arşivlerini C# dilinde Çıkarın
C#’ta Birden Çok ZIP veya TAR Arşivini Birleştirme