New to Telerik Document ProcessingStart a free 30-day trial

How to zip and unzip multiple files with a password

Updated on Feb 19, 2026

Environment

Product Version2020.2.617
ProductRadZipLibrary for Document Processing

Description

The example is showing how to all files from a directory to a password-protected zip archive.

Solution

The following code snippet is traversing all the files in a directory then add the contents of each file to a new Entry in the ZipArchive. The password for the archive is passed through the DefaultEncryptionSettings class. After zipping all the files a new folder named TestZip is created and the contents of the ZipArchive are unzipped into the new folder.

csharp

    DefaultEncryptionSettings protectionSettings = new DefaultEncryptionSettings() { Password = "test" };

    using (FileStream output = File.OpenWrite("TestZip.zip"))
    {
        using (ZipArchive zipArchive = new ZipArchive(output, ZipArchiveMode.Create, true, null, null, protectionSettings))
        {
            string currentDirectory = Directory.GetCurrentDirectory();
            string[] files = Directory.GetFiles(currentDirectory);
            IEnumerable<string> txtFiles = files.Where(p => Path.GetExtension(p) == ".txt");

            foreach (string file in txtFiles)
            {
                using (FileStream stream = File.OpenRead(file))
                {
                    using (ZipArchiveEntry entry = zipArchive.CreateEntry(Path.GetFileName(file)))
                    {
                        Stream entryStream = entry.Open();
                        stream.CopyTo(entryStream);
                    }
                }
            }
        }
    }

    string unzipDir = "TestZip";
    if (!Directory.Exists(unzipDir))
    {
        Directory.CreateDirectory(unzipDir);
    }

    using (FileStream output = File.OpenRead("TestZip.zip"))
    {
        using (ZipArchive zipArchive = new ZipArchive(output, ZipArchiveMode.Read, true, null, null, protectionSettings))
        {
            foreach (ZipArchiveEntry entry in zipArchive.Entries)
            {
                using (Stream entryStream = entry.Open())
                using (FileStream fileStream = File.OpenWrite(string.Format("{0}/{1}", unzipDir, entry.FullName)))
                {
                    entryStream.CopyTo(fileStream);
                }
            }
        }
    }
In this article
EnvironmentDescriptionSolution
Not finding the help you need?
Contact Support