ZipFileExtensions.ExtractToDirectory Método

Definição

Sobrecargas

ExtractToDirectory(ZipArchive, String)

Extrai todos os arquivos no arquivo zip especificado para um diretório do sistema de arquivos.

ExtractToDirectory(ZipArchive, String, Boolean)

Extrai todos os arquivos dos arquivos para um diretório do sistema de arquivos.

ExtractToDirectory(ZipArchive, String)

Origem:
ZipFileExtensions.ZipArchive.Extract.cs
Origem:
ZipFileExtensions.ZipArchive.Extract.cs
Origem:
ZipFileExtensions.ZipArchive.Extract.cs

Extrai todos os arquivos no arquivo zip especificado para um diretório do sistema de arquivos.

public static void ExtractToDirectory (this System.IO.Compression.ZipArchive source, string destinationDirectoryName);

Parâmetros

source
ZipArchive

O arquivo zip de onde extrair os arquivos.

destinationDirectoryName
String

O caminho para o diretório para colocar os arquivos extraídos. Você pode especificar um caminho absoluto ou relativo. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

Exceções

destinationDirectoryName é Empty, contém somente espaços em branco ou, pelo menos, um caractere inválido.

destinationDirectoryName é null.

O caminho especificado excede o tamanho máximo definido pelo sistema.

O caminho especificado é inválido (por exemplo, ele está em uma unidade não mapeada).

O nome de uma entrada no arquivo morto é Empty, contém somente espaços em branco ou, pelo menos, um caractere inválido.

- ou -

A extração de uma entrada do arquivo criará um arquivo que está fora do diretório especificado por destinationDirectoryName. (Por exemplo, isso poderá acontecer se o nome da entrada contiver acessadores de diretório pai.)

- ou -

Duas ou mais entradas no arquivo tem o mesmo nome.

O chamador não tem a permissão necessária para acessar o arquivo ou o diretório de destino.

destinationDirectoryName contém um formato inválido.

Uma entrada de arquivo não pode ser encontrada ou está corrompida.

- ou -

Uma entrada de arquivo morto foi compactada usando um método de compactação sem suporte.

Exemplos

O exemplo a seguir mostra como criar uma nova entrada em um arquivo zip de um arquivo existente e extrair o arquivo para um novo diretório.

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);
            }
        }
    }
}

Comentários

Esse método cria o diretório especificado por destinationDirectoryName. O método também cria subdiretórios que refletem a hierarquia no arquivo zip. Se ocorrer um erro durante a extração, o arquivo morto permanecerá parcialmente extraído. Cada arquivo extraído tem o mesmo caminho relativo para o diretório especificado por destinationDirectoryName como sua entrada de origem tem para a raiz do arquivo morto.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

ExtractToDirectory(ZipArchive, String, Boolean)

Origem:
ZipFileExtensions.ZipArchive.Extract.cs
Origem:
ZipFileExtensions.ZipArchive.Extract.cs
Origem:
ZipFileExtensions.ZipArchive.Extract.cs

Extrai todos os arquivos dos arquivos para um diretório do sistema de arquivos.

public static void ExtractToDirectory (this System.IO.Compression.ZipArchive source, string destinationDirectoryName, bool overwriteFiles);

Parâmetros

source
ZipArchive

O ZipArchive a ser extraído.

destinationDirectoryName
String

O caminho para o diretório de destino no sistema de arquivos. O caminho pode ser relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

overwriteFiles
Boolean

true para substituir arquivos existentes; false Caso contrário.

Exceções

destinationArchiveFileName é uma cadeia de comprimento zero, contém somente espaço em branco ou um ou mais caracteres inválidos, conforme definido por InvalidPathChars.

destinationArchiveFileName é null.

O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.

O caminho especificado é inválido (por exemplo, ele está em uma unidade não mapeada).

O nome de uma ZipArchiveEntry é uma cadeia de comprimento zero, contém somente espaço em branco ou contém um ou mais caracteres inválidos, conforme definido por InvalidPathChars.

- ou -

A extração de uma ZipArchiveEntry resulta em um arquivo de destino que está fora de destinationArchiveFileName (por exemplo, se o nome da entrada contém acessadores de diretório pai).

- ou -

Uma ZipArchiveEntry tem o mesmo nome de uma entrada já extraída dos mesmos arquivos.

O chamador não tem a permissão necessária.

destinationArchiveFileName está em um formato inválido.

Uma ZipArchiveEntry não foi encontrada ou estava corrompida.

- ou -

Uma ZipArchiveEntry foi compactada usando um método de compactação sem suporte.

Comentários

O diretório especificado já pode existir. Esse método cria o diretório especificado e todos os subdiretórios, se necessário.

Se houver um erro ao extrair o arquivo morto, o arquivo permanecerá parcialmente extraído.

Cada entrada é extraída de modo que o arquivo extraído tenha o mesmo caminho relativo para destinationDirectoryName que a entrada tenha para a raiz do arquivo morto.

Se um arquivo a ser arquivado tiver uma hora da última modificação inválida, a primeira data e hora representáveis no formato de carimbo de data/hora zip (meia-noite de 1º de janeiro de 1980) será usada.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1