Create ZIP in C#

Introduction to ZIP Archives in C#

ZIP archives are essential for compressing and organizing files and folders into a single container. They not only reduce file sizes for efficient storage and transmission but also maintain metadata and can be encrypted for security purposes. This article will guide you through various methods to programmatically create ZIP files in C#, covering operations such as adding files and folders, creating password-protected archives, and applying AES encryption.

What You Will Learn

In this article, you will discover how to:

C# ZIP Library

The Aspose.ZIP for .NET library is a powerful tool for handling ZIP file operations within .NET applications. It simplifies the process of zipping or unzipping files and folders and supports AES encryption for enhanced security. You can easily install this library from NuGet or download the binaries from the Downloads section.

Create a ZIP Archive in C#

To programmatically create a ZIP file in C#, follow these steps:

  1. Create a FileStream object for the output ZIP archive.
  2. Open the source file as a FileStream object.
  3. Instantiate the Archive class.
  4. Add the file to the archive using the Archive.CreateEntry(string, FileStream) method.
  5. Save the ZIP archive with the Archive.Save(FileStream) method.

Here’s a code sample demonstrating how to add a file to a ZIP archive in C#:

Add Multiple Files to a ZIP Archive in C#

When you need to add multiple files to a ZIP archive, you can use several approaches:

Using FileStream to Add Multiple Files

This method employs the FileStream class to add files to the ZIP archive via the Archive.CreateEntry(String, FileStream) method. Here’s how you can do it:

Using FileInfo for Multiple Files

Alternatively, you can utilize the FileInfo class to load files and add them to the ZIP archive with the Archive.CreateEntry(String, FileInfo) method. Below is a code sample:

Using File Paths

You can also directly provide the file paths to the Archive.CreateEntry(String name, String path, Boolean openImmediately, ArchiveEntrySettings newEntrySettings) method. Here’s an example:

Add Folders to a ZIP Archive in C#

To add a folder to a ZIP archive in C#, you can follow these steps:

  1. Create a FileStream object for the output ZIP archive.
  2. Instantiate the Archive class.
  3. Use the DirectoryInfo class to specify the folder you want to zip.
  4. Add the folder to the ZIP using the Archive.CreateEntries(DirectoryInfo) method.
  5. Save the ZIP archive with the Archive.Save(FileStream) method.

Here’s a code sample that illustrates how to add a folder to a ZIP file:

Create a Password Protected ZIP using ZipCrypto in C#

To secure your ZIP archives, you can apply password protection using ZipCrypto encryption. This is achieved by utilizing the ArchiveEntrySettings class in the constructor of the Archive, which accepts the encryption type as a parameter.

Here’s how to create a password-protected ZIP archive using ZipCrypto in C#:

Create Password Protected ZIP with AES Encryption

The Aspose.ZIP for .NET library also supports AES encryption for protecting ZIP archives. You can choose from the following AES encryption methods:

  • AES128
  • AES192
  • AES256

To apply AES encryption, use the AesEcryptionSettings class. Below is a code sample demonstrating how to create a password-protected ZIP with AES encryption in C#:

Set Parallel Compression Mode

For efficient handling of multiple entries, you can configure the API for parallel compression using the ParallelOptions class. The available parallel compression modes are:

  • Never - Do not compress in parallel.
  • Always - Compress in parallel (beware of potential memory issues).
  • Auto - Automatically decide whether to use parallel compression based on the entries.

Here’s how to set parallel compression mode while zipping multiple files with the Aspose C# ZIP library:

Learn More About C# .NET ZIP Library

To deepen your understanding of the C# ZIP library, explore the following resources:

Try Our Online ZIP Compression Tool

You can also experiment with our free online application based on the Aspose.ZIP for .NET to compress files into ZIP archives effortlessly.

Conclusion

In this article, you have learned how to create ZIP archives programmatically in C#. The provided code samples demonstrate how to add files and folders to ZIP archives, create password-protected ZIP files using ZipCrypto and AES encryption methods, and configure parallel compression. If you have any questions or need further assistance, feel free to reach out via our forum.

See Also

Unrar or Extract Files using C#Unzip Files in ZIP Archives using C#Create 7z (7-Zip) Archives in C# .NET
Open or Extract 7z (7zip) File in C# .NETCreate and Extract GZip Archives using C#Convert RAR Files to ZIP Archive in C#
Convert ZIP Archives to TAR in C#Create a Flat ZIP Archive in C#Create Executable Self-extracting Archive in C#
Create TAR.GZ and TAR.XZ Files in C#Delete Files in a ZIP Archive in C#Extract Nested ZIP Archives in C#
Merge Multiple ZIP or TAR Archives in C#How to Create ZIP FilesExtract 7z Online