![Buat ZIP di C#](images/Create-ZIP-in-C.jpg#center)
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:
- Buat arsip ZIP menggunakan C#
- Tambahkan beberapa file ke arsip ZIP
- Tambahkan folder ke arsip ZIP
- Buat arsip ZIP yang dilindungi kata sandi menggunakan ZipCrypto
- Enkripsi arsip ZIP dengan enkripsi AES
- Atur mode kompresi paralel
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:
- Buat objek FileStream untuk arsip ZIP keluaran.
- Buka file sumber ke objek FileStream.
- Buat objek kelas Archive.
- Tambahkan file ke dalam arsip menggunakan metode Archive.CreateEntry(string, FileStream).
- Buat arsip ZIP menggunakan metode Archive.Save(FileStream).
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#:
- Buat objek kelas FileStream untuk arsip ZIP keluaran.
- Buat instance dari kelas Archive.
- Gunakan kelas DirectoryInfo untuk menentukan folder yang akan di-zip.
- Gunakan metode Archive.CreateEntries(DirectoryInfo) untuk menambahkan folder ke dalam ZIP.
- Buat arsip ZIP menggunakan metode Archive.Save(FileStream).
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.