Buat ZIP di C#

Arsip ZIP digunakan untuk mengompres dan menyimpan satu atau lebih file atau folder ke dalam satu wadah. Arsip ZIP merangkum file dan folder serta menyimpan informasi metadatanya. Penggunaan pengarsipan yang paling umum adalah mengurangi ukuran file untuk penyimpanan atau transmisi dan menerapkan enkripsi untuk keamanan. Selain alat kompresi file, fitur kompresi/ekstraksi otomatis juga digunakan dalam berbagai aplikasi desktop dan web untuk mengunggah, mengunduh, berbagi, atau mengenkripsi file. Artikel ini juga menargetkan skenario serupa dan menyajikan beberapa cara mudah mengompresi file atau folder dan membuat arsip ZIP secara terprogram menggunakan C#.

Dalam artikel ini, Anda akan mempelajari cara melakukan operasi pengarsipan ZIP berikut:

Perpustakaan C# ZIP

Aspose.ZIP for .NET adalah API yang kuat dan mudah digunakan untuk zipping atau unzip file dan folder dalam aplikasi .NET. Ini juga menyediakan teknik enkripsi AES untuk mengenkripsi file dalam ZIP dalam C#. Anda dapat menginstal API dari NuGet atau mengunduh binarinya dari bagian Unduhan.

Buat Arsip ZIP di C#

Berikut adalah langkah-langkah untuk mengompres file dengan menambahkannya ke dalam arsip ZIP:

Contoh kode berikut menunjukkan cara menambahkan file ke arsip ZIP menggunakan C#.

// Buat FileStream untuk arsip ZIP keluaran
using (FileStream zipFile = File.Open("compressed_file.zip", FileMode.Create))
{
	// File yang akan ditambahkan ke arsip
	using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
	{
		using (var archive = new Archive(new ArchiveEntrySettings()))
		{
			// Tambahkan file ke arsip
			archive.CreateEntry("alice29.txt", source1);
			// file ZIP
			archive.Save(zipFile);
		}
	}
}

Tambahkan Beberapa File ke Arsip ZIP di C#

Jika Anda ingin menambahkan banyak file ke dalam arsip ZIP, Anda dapat melakukannya menggunakan salah satu cara berikut.

C# ZIP Banyak File menggunakan FileStream

Dalam metode ini, kelas FileStream digunakan untuk menambahkan file ke arsip ZIP menggunakan metode Archive.CreateEntry(String, FileStream). Contoh kode berikut menunjukkan cara menambahkan banyak file ke ZIP di C#.

// Buat FileStream untuk keluaran arsip ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
	// File yang akan ditambahkan ke arsip
	using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
	{
		// File yang akan ditambahkan ke arsip
		using (FileStream source2 = File.Open("asyoulike.txt", FileMode.Open, FileAccess.Read))
		{
			using (var archive = new Archive())
			{
				// Tambahkan file ke arsip
				archive.CreateEntry("alice29.txt", source1);
				archive.CreateEntry("asyoulik3.txt", source2);
				// ZIP file
				archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "two files are compressed in this archive" });
			}
		}
	}
}

C# ZIP Banyak File menggunakan FileInfo

Anda juga dapat menggunakan kelas FileInfo untuk menambahkan beberapa file ke dalam arsip ZIP. Dalam metode ini, file akan dimuat menggunakan kelas FileInfo dan ditambahkan ke arsip ZIP menggunakan metode Archive.CreateEntry(String, FileInfo). Contoh kode berikut menunjukkan cara ZIP beberapa file menggunakan kelas FileInfo di C#.

// Buat FileStream untuk keluaran arsip ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
	// File yang akan ditambahkan ke arsip
	FileInfo fi1 = new FileInfo("alice29.txt");
	FileInfo fi2 = new FileInfo("fields.c");

	using (var archive = new Archive())
	{
		// Tambahkan file ke arsip
		archive.CreateEntry("alice29.txt", fi1);
		archive.CreateEntry("fields.c", fi2);
		// Buat arsip ZIP
		archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
	}
}

File ZIP menggunakan Path

Alih-alih menggunakan kelas FileInfo atau FileStream untuk entri ZIP, Anda dapat memberikan jalur file secara langsung ke metode Archive.CreateEntry(String name, String path, Boolean openImmediately, ArchiveEntrySettings newEntrySettings). Contoh kode berikut menunjukkan cara file ZIP menggunakan jalurnya.

// Buat FileStream untuk keluaran arsip ZIP
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    // Buat arsip
    using (var archive = new Archive())
    {
        // Tambahkan file ke arsip ZIP
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(zipFile);
    }
}

Tambahkan Folder ke Arsip ZIP di C#

Anda dapat membuat folder ZIP dengan pustaka C# ZIP, yang dapat menjadi alternatif lain untuk menambahkan banyak file ke arsip ZIP. Masukkan saja file sumber ke dalam folder dan tambahkan folder itu ke arsip ZIP. Berikut ini adalah langkah-langkah untuk ZIP folder di C#:

Contoh kode berikut menunjukkan cara menambahkan folder ke ZIP di C#.

// Buat FileStream untuk keluaran arsip ZIP
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive())
	{
		// Folder yang akan di-zip
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Buat arsip ZIP
		archive.Save(zipFile);
	}
}

Buat ZIP yang Dilindungi Kata Sandi menggunakan ZipCrypto di C#

Anda dapat melindungi arsip ZIP menggunakan kata sandi dan menerapkan enkripsi ZipCrypto. Untuk ini, kelas ArchiveEntrySettings digunakan dalam konstruktor Archive yang menerima tipe enkripsi sebagai parameter kedua.

Contoh kode berikut menunjukkan cara membuat arsip ZIP yang dilindungi kata sandi menggunakan ZipCrypto di C#.

// Buat FileStream untuk keluaran arsip ZIP
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$"))))
	{
		// Tambahkan folder ke arsip
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Buat arsip ZIP
		archive.Save(zipFile);
	}
}

C# Buat ZIP yang Dilindungi Kata Sandi dengan Enkripsi AES

Aspose.ZIP for .NET juga memungkinkan Anda menerapkan enkripsi AES untuk melindungi arsip ZIP. Anda dapat menggunakan metode enkripsi AES berikut:

  • AES128
  • AES192
  • AES256

Untuk menerapkan enkripsi AES, API menawarkan kelas AesEcryptionSettings. Contoh kode berikut menunjukkan cara membuat ZIP yang dilindungi kata sandi dengan enkripsi AES di C#.

// Buat FileStream untuk arsip ZIP keluaran
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Tambahkan folder ke arsip
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Buat arsip ZIP
		archive.Save(zipFile);
	}
}

Setel Mode Kompresi Paralel

Anda juga dapat mengonfigurasi API untuk kompresi paralel jika ada banyak entri. Untuk ini, Anda dapat menentukan mode kompresi paralel menggunakan kelas ParallelOptions. Aspose.ZIP for .NET menyediakan mode kompresi paralel berikut.

  • Tidak pernah - Jangan kompres secara paralel.
  • Selalu - Lakukan kompres secara paralel (hati-hati kehabisan memori).
  • Otomatis - Putuskan apakah akan menggunakan kompresi paralel atau tidak pada entri. Opsi ini dapat memampatkan beberapa entri secara paralel saja.

Contoh kode berikut menunjukkan cara menyetel mode kompresi paralel sambil meng-zip beberapa file dengan pustaka C# ZIP Aspose.

// Untuk contoh lengkap dan file data, silakan buka https://github.com/aspose-zip/Aspose.ZIP-for-.NET
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);
                //Tentukan kriteria paralelisme
                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"
                    });
            }
        }
    }
}

Pelajari Lebih Lanjut Tentang C# .NET ZIP Library

Jelajahi lebih lanjut tentang C# ZIP API kami menggunakan sumber daya berikut:

Jadikan Arsip ZIP Online

Anda juga dapat mencoba aplikasi online gratis kami, yang didasarkan pada Aspose.ZIP for .NET, untuk mengompresi file ke dalam arsip ZIP.

Kesimpulan

Pada artikel ini, Anda telah mempelajari cara membuat arsip ZIP secara terprogram dalam C#. Contoh kode telah menunjukkan cara menambahkan file dan folder di arsip ZIP. Selain itu, kami juga telah membahas cara membuat arsip ZIP yang dilindungi kata sandi dengan metode enkripsi ZipCrypto dan AES menggunakan pustaka ZIP C# Aspose. Di samping itu, kompresi paralel dari banyak entri juga dibahas di bagian akhir. Jika Anda memiliki pertanyaan atau pertanyaan, Anda dapat bertanya kepada kami melalui forum kami.

Lihat juga

Unrar atau Ekstrak File menggunakan C#Unzip File di Arsip ZIP menggunakan C#Buat Arsip 7z (7-Zip) di C# .NET
Buka atau Ekstrak File 7z (7zip) di C# .NETBuat dan Ekstrak Arsip GZip menggunakan C#Konversi File RAR ke Arsip ZIP di C#
Ubah Arsip ZIP ke TAR di C#Buat Arsip ZIP Datar di C#Buat Arsip Self-extracting yang Dapat Dieksekusi di C#
Buat File TAR.GZ dan TAR.XZ di C#Hapus File di Arsip ZIP di C#Ekstrak Arsip ZIP Bersarang di C#
Gabungkan Beberapa Arsip ZIP atau TAR di C#