New to Telerik Document ProcessingStart a free 30-day trial

ZipArchive Entry

Updated on May 11, 2026

ZipArchiveEntry represents every single compressed file within a zip archive.

What Is ZipArchiveEntry

The root element of the RadZipLibrary is the ZipArchive. The ZipArchive, on the other hand, consists of ZipArchiveEntries hosting all entries in the zip archive. You can Get ZipArchiveEntry or Create ZipArchiveEntry using the ZipArchive instance.

Properties

The following table describes the properties of ZipArchiveEntry:

PropertyDescription
CompressedLengthGets the compressed size of the entry in the zip archive. Note: this value is available only after the ZipArchiveEntry is disposed.
ExternalAttributesGets or sets external file attributes.
FullNameGets the relative path of the entry in the zip archive.
LastWriteTimeGets or sets the last time the entry in the zip archive was changed.
LengthGets the uncompressed size of the entry in the zip archive. Note: this value is available only after the ZipArchiveEntry is disposed.
NameGets the file name of the entry in the zip archive.

Example 1: Get entry's compressed length

C#
ZipArchiveEntry entry;
using (entry = archive.CreateEntry("file.txt"))
{
    StreamWriter writer = new StreamWriter(entry.Open());
    writer.WriteLine("Progress!");
    writer.Flush();
}

long compressedLength = entry.CompressedLength;

Example 2: Set entry's external attributes

C#
entry.ExternalAttributes = (int)File.GetAttributes(sourceFileName);

Example 3: Get entry's relative path

C#
string fullName = entry.FullName;

Example 4: Set last entry's write time

C#
DateTime lastWriteTime = File.GetLastWriteTime(sourceFileName);
entry.LastWriteTime = lastWriteTime;

Example 5: Get entry's length

C#
ZipArchiveEntry entry;
using (entry = archive.CreateEntry("file.txt"))
{
    StreamWriter writer = new StreamWriter(entry.Open());
    writer.WriteLine("Progress!");
    writer.Flush();
}

long length = entry.CompressedLength;

Example 6: Get entry's name

C#
string name = entry.Name;

Methods

The following table describes the methods of ZipArchiveEntry:

MethodDescription
DeleteDeletes the entry from the zip archive.
DisposeReleases the resources used by the current instance of the ZipArchiveEntry class.
OpenOpens the entry from the zip archive.

Events

EventDescription
PropertyChangedOccurs when a property value changes.

ZipArchive and ZipArchiveEntry

There are several operations, which you can execute over a ZipArchive instance.

Get ZipArchiveEntry

Retrieves a wrapper for the specified entry in the zip archive.

Example 7: Get ZipArchiveEntry

C#
ZipArchiveEntry entry = archive.GetEntry("file.txt");

Create ZipArchiveEntry

Creates an empty entry that has the specified path and entry name in the zip archive.

Example 8: Create ZipArchiveEntry

C#
ZipArchiveEntry entry1 = archive.CreateEntry("file.txt");

//OR

ZipArchiveEntry entry2 = archive.CreateEntry("file.txt", compressionSettings);

Extract ZipArchiveEntry

Extract an entry to a specific folder/directory.

Example 9: Extracting a ZipArchiveEntry to folder/directory

C#
ZipArchiveEntry entry = archive.GetEntry("file.txt");
string path = Path.Combine(RootDirectory, entry.FullName);

using (Stream fileStream = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None))
{
    using (Stream entryStream = entry.Open())
    {
        entryStream.CopyTo(fileStream);
    }
}

This functionality could be achieved by using the Zip Extensions' ExtractToFile method as well.

Operating with ZipArchiveEntry

Specific examples of using the ZipArchiveEntry.

Using ZipArchiveEntry Properties

A complete example including all the properties discussed above.

Example 10: Complete example

C#
string[] files = Directory.GetFiles("SampleFiles");
string zipFileName = "ZipArchive.zip";

using (Stream stream = File.Open(zipFileName, FileMode.Create))
{
    using (ZipArchive archive = ZipArchive.Create(stream, null))
    {
        foreach (string file in files)
        {
            string sourceFileName = file;
            string fileName = file.Split(new string[] { "\\" }, StringSplitOptions.None).Last();

            ZipArchiveEntry entry;
            using (entry = archive.CreateEntry(fileName))
            {
                using (Stream fileStream = File.Open(sourceFileName, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    //Setting the ExternalAttributes property
                    entry.ExternalAttributes = (int)File.GetAttributes(sourceFileName);

                    DateTime lastWriteTime = File.GetLastWriteTime(sourceFileName);
                    //Setting the LastWriteTime property
                    entry.LastWriteTime = lastWriteTime;

                    //Getting the FullName property
                    string fullName = entry.FullName;

                    //Getting the Name property
                    string name = entry.Name;

                    using (Stream entryStream = entry.Open())
                    {
                        fileStream.CopyTo(entryStream);
                    }
                }
            }

            //Getting the CompressedLength property
            long compressedLength = entry.CompressedLength;

            //Getting the Length property
            long length = entry.Length;
        }
    }
}

Working with Folders/Directories

Example 11: Creating folders/directories

C#
ZipArchiveEntry entry = archive.CreateEntry("Documents/Sample/");

Example 12: Opening Files in folders/directories

C#
ZipArchiveEntry entry = archive.GetEntry("Documents/Sample/file.txt");

See Also