Di posting sebelumnya, saya telah membahas berbagai cara membuat arsip ZIP menggunakan C#. Artikel tersebut juga membahas cara membuat arsip ZIP terenkripsi dan dilindungi kata sandi. Selain format ZIP, ada beberapa format arsip lain yang umum digunakan seperti 7z, tar, RAR, dll. Di antaranya, format arsip 7z didasarkan pada arsitektur open-source dan digunakan untuk mengompres file dan folder dengan rasio kompresi yang tinggi. Ini juga mendukung enkripsi AES 256-bit dan memungkinkan mengenkripsi nama file juga. Pada artikel ini, saya akan mendemonstrasikan cara membuat arsip 7z (7-Zip) secara terprogram menggunakan C#.
Artikel ini dibagi menjadi beberapa bagian berikut:
- Buat Arsip 7z (7-Zip) menggunakan C#
- Buat Arsip 7z Terenkripsi AES menggunakan C#
- Tetapkan Kata Sandi Berbeda untuk Entri 7z menggunakan C #
Semua langkah dan contoh kode dalam artikel ini didasarkan pada Aspose.ZIP for .NET. Oleh karena itu, pastikan Anda telah menginstal API menggunakan salah satu metode berikut:
- Instal menggunakan NuGet Package Manager.
- Unduh DLL and add its reference to the project.
Buat Arsip 7z (7-Zip) menggunakan C#
Mungkin ada dua kemungkinan skenario untuk mengompresi file ke dalam arsip 7z. Entah Anda hanya memiliki satu file atau mungkin ada banyak file yang akan dikompresi. Anda dapat menangani kedua skenario secara eksplisit.
Buat Arsip 7z dengan Entri Tunggal
Berikut langkah-langkah membuat arsip 7z dengan satu entri.
- Buka FileStream baru untuk membuat file 7z.
- Buat instance dari kelas SevenZipArchive.
- Tambahkan file ke arsip menggunakan metode SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings).
- Buat dan simpan arsip menggunakan metode SevenZipArchive.Save(Stream).
Contoh kode berikut menunjukkan cara membuat arsip 7z (7-Zip) menggunakan C#.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(sevenZipFile);
}
}
Buat Arsip 7z dengan Banyak Entri
Dalam hal ini, Anda dapat meletakkan file dalam folder dan meneruskan jalur folder ke metode SevenZipArchive.CreateEntries(). Berikut ini adalah langkah-langkah untuk menambahkan beberapa entri file ke arsip 7z.
- Buat instance dari kelas SevenZipArchive.
- Lewati jalur folder ke metode SevenZipArchive.CreateEntries(String, Boolean).
- Panggil metode SevenZipArchive.Save(String).
Contoh kode berikut menunjukkan cara membuat arsip 7z dengan banyak entri menggunakan C#.
using (SevenZipArchive archive = new SevenZipArchive())
{
archive.CreateEntries(dataDir);
archive.Save("SevenZip.7z");
}
Buat Arsip 7z Terenkripsi AES menggunakan C#
Format 7z mendukung enkripsi AES untuk mengamankan file. Untuk mengenkripsi file 7z, kelas SevenZipAESencryptionSettings digunakan. Contoh kode berikut menunjukkan cara membuat arsip 7z terenkripsi AES menggunakan C#.
using (var archive = new SevenZipArchive(new SevenZipEntrySettings(null, new SevenZipAESEncryptionSettings("p@s$"))))
{
archive.CreateEntry("data.bin", new MemoryStream(new byte[] { 0x00, 0xFF }));
archive.Save("archive.7z");
}
Tetapkan Kata Sandi Berbeda untuk Entri 7z menggunakan C
Format 7z juga memungkinkan Anda menentukan kata sandi yang berbeda untuk setiap entri file. Misalnya, jika Anda akan mengompresi dua file dalam arsip 7z, Anda dapat menentukan kata sandi yang berbeda untuk setiap file. Berikut ini adalah langkah-langkah untuk mengatur kata sandi yang berbeda untuk entri 7z.
- Buat [FileStream] baru 19 untuk file arsip 7z.
- Akses setiap entri file menggunakan kelas FileInfo.
- Buat instance dari kelas SevenZipArchive.
- Buat entri ke arsip 7z menggunakan SevenZipArchive.CreateEntry(String, FileInfo, Boolean, SevenZipEntrySettings)
- Simpan arsip menggunakan metode SevenZipArchive.Save(Stream).
Contoh kode berikut menunjukkan cara mengatur kata sandi untuk setiap entri dalam arsip 7z.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
FileInfo fi1 = new FileInfo("data1.bin");
FileInfo fi2 = new FileInfo("data2.bin");
FileInfo fi3 = new FileInfo("data3.bin");
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("entry1.bin", fi1, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test1")));
archive.CreateEntry("entry2.bin", fi2, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test2")));
archive.CreateEntry("entry3.bin", fi3, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test3")));
archive.Save(sevenZipFile);
}
}
Kesimpulan
Pada artikel ini, kita telah mempelajari cara membuat arsip 7z secara terprogram menggunakan C#. Selain itu, kami telah melihat cara membuat file 7z terenkripsi AES dan mengatur kata sandi untuk setiap entri file. Anda dapat mempelajari lebih lanjut tentang kompresi/dekompresi file dari di sini.