ZipFileExtensions.ExtractToDirectory Method

Definition

Overloads

ExtractToDirectory(ZipArchive, String)

Extracts all the files in the zip archive to a directory on the file system.

ExtractToDirectory(ZipArchive, String, Boolean)

Extracts all of the files in the archive to a directory on the file system.

ExtractToDirectory(ZipArchive, String)

Extracts all the files in the zip archive to a directory on the file system.

public:
[System::Runtime::CompilerServices::Extension]
 static void ExtractToDirectory(System::IO::Compression::ZipArchive ^ source, System::String ^ destinationDirectoryName);
public static void ExtractToDirectory (this System.IO.Compression.ZipArchive source, string destinationDirectoryName);
static member ExtractToDirectory : System.IO.Compression.ZipArchive * string -> unit
<Extension()>
Public Sub ExtractToDirectory (source As ZipArchive, destinationDirectoryName As String)

Parameters

source
ZipArchive

The zip archive to extract files from.

destinationDirectoryName
String

The path to the directory to place the extracted files in. You can specify either a relative or an absolute path. A relative path is interpreted as relative to the current working directory.

Exceptions

destinationDirectoryName is Empty, contains only white space, or contains at least one invalid character.

destinationDirectoryName is null.

The specified path exceeds the system-defined maximum length.

The specified path is invalid (for example, it is on an unmapped drive).

The directory specified by destinationDirectoryName already exists.

-or-

The name of an entry in the archive is Empty, contains only white space, or contains at least one invalid character.

-or-

Extracting an entry from the archive would create a file that is outside the directory specified by destinationDirectoryName. (For example, this might happen if the entry name contains parent directory accessors.)

-or-

Two or more entries in the archive have the same name.

The caller does not have the required permission to write to the destination directory.

destinationDirectoryName contains an invalid format.

An archive entry cannot be found or is corrupt.

-or-

An archive entry was compressed by using a compression method that is not supported.

Examples

The following example shows how to create a new entry in a zip archive from an existing file, and extract the archive to a new directory. In order to compiler this code example, you must reference the System.IO.Compression and System.IO.Compression.FileSystem assemblies in your project.

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string zipPath = @"c:\users\exampleuser\start.zip";
            string extractPath = @"c:\users\exampleuser\extract";
            string newFile = @"c:\users\exampleuser\NewFile.txt";
            
            using (ZipArchive archive = ZipFile.Open(zipPath, ZipArchiveMode.Update))
            {
                archive.CreateEntryFromFile(newFile, "NewEntry.txt");
                archive.ExtractToDirectory(extractPath);
            } 
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim zipPath As String = "c:\users\exampleuser\end.zip"
        Dim extractPath As String = "c:\users\exampleuser\extract"
        Dim newFile As String = "c:\users\exampleuser\NewFile.txt"

        Using archive As ZipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Update)
            archive.CreateEntryFromFile(newFile, "NewEntry.txt", CompressionLevel.Fastest)
            archive.ExtractToDirectory(extractPath)
        End Using
    End Sub

End Module

Remarks

This method creates the directory specified by destinationDirectoryName. If the destination directory already exists, this method does not overwrite it; it throws an IOException exception. The method also creates subdirectories that reflect the hierarchy in the zip archive. If an error occurs during extraction, the archive remains partially extracted. Each extracted file has the same relative path to the directory specified by destinationDirectoryName as its source entry has to the root of the archive.

ExtractToDirectory(ZipArchive, String, Boolean)

Extracts all of the files in the archive to a directory on the file system.

public:
[System::Runtime::CompilerServices::Extension]
 static void ExtractToDirectory(System::IO::Compression::ZipArchive ^ source, System::String ^ destinationDirectoryName, bool overwriteFiles);
public static void ExtractToDirectory (this System.IO.Compression.ZipArchive source, string destinationDirectoryName, bool overwriteFiles);
static member ExtractToDirectory : System.IO.Compression.ZipArchive * string * bool -> unit
<Extension()>
Public Sub ExtractToDirectory (source As ZipArchive, destinationDirectoryName As String, overwriteFiles As Boolean)

Parameters

source
ZipArchive

The ZipArchive to extract.

destinationDirectoryName
String

The path to the destination directory on the file system. The path can be relative or absolute. A relative path is interpreted as relative to the current working directory.

overwriteFiles
Boolean

true to indicate that existing files are to be overwritten; false otherwise.

Exceptions

destinationArchiveFileName is a zero-length string, contains only whitespace, or contains one or more invalid characters as defined by InvalidPathChars.

destinationArchiveFileName is null.

The specified path, file name, or both exceed the system-defined maximum length.

The specified path is invalid, (for example, it is on an unmapped drive).

The name of a ZipArchiveEntry is zero-length, contains only whitespace, or contains one or more invalid characters as defined by InvalidPathChars.

-or-

Extracting a ZipArchiveEntry would have resulted in a destination file that is outside destinationArchiveFileName (for example, if the entry name contains parent directory accessors).

-or-

A ZipArchiveEntry has the same name as an already extracted entry from the same archive.

The caller does not have the required permission.

destinationArchiveFileName is in an invalid format.

A ZipArchiveEntry was not found or was corrupt.

-or-

A ZipArchiveEntry has been compressed using a compression method that is not supported.

Remarks

The specified directory may already exist. This method will create the specified directory and all subdirectories if necessary.

If there is an error while extracting the archive, the archive will remain partially extracted.

Each entry will be extracted such that the extracted file has the same relative path to destinationDirectoryName as the entry has to the root of the archive.

If a file to be archived has an invalid last modified time, the first date and time representable in the Zip timestamp format (midnight on January 1, 1980) will be used.

Applies to