ZipFile.ExtractToDirectory Método

Definição

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

Sobrecargas

Name Description
ExtractToDirectory(String, String)

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

ExtractToDirectory(String, String, Boolean)

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

ExtractToDirectory(String, String, Encoding)

Extrai todos os ficheiros do arquivo zip especificado para um diretório no sistema de ficheiros e utiliza a codificação de caracteres especificada para nomes de entrada e comentários.

ExtractToDirectory(String, String, Encoding, Boolean)

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

ExtractToDirectory(String, String)

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

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName);
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName);
static member ExtractToDirectory : string * string -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String)

Parâmetros

sourceArchiveFileName
String

O caminho para o arquivo que deve ser extraído.

destinationDirectoryName
String

O caminho para o diretório onde colocar os ficheiros extraídos, especificado como um caminho relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

Exceções

destinationDirectoryName ou sourceArchiveFileName é Empty, contém apenas espaço em branco, ou contém pelo menos um carácter inválido.

destinationDirectoryName ou sourceArchiveFileName é null.

O caminho especificado em destinationDirectoryName ou sourceArchiveFileName excede o comprimento máximo definido pelo sistema.

O caminho especificado é inválido (por exemplo, está num disco não mapeado).

O nome de uma entrada no arquivo é Empty, contém apenas espaço em branco, ou contém pelo menos um carácter inválido.

-ou-

Extrair uma entrada de arquivo criaria um ficheiro fora do diretório especificado por destinationDirectoryName. (Por exemplo, isto pode acontecer se o nome da entrada contiver acessórios de diretório pai.)

-ou-

Uma entrada de arquivo a extrair tem o mesmo nome que uma entrada que já foi extraída ou que existe em destinationDirectoryName.

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

destinationDirectoryName ou sourceArchiveFileName contém um formato inválido.

sourceArchiveFileName não foi encontrado.

O arquivo especificado por sourceArchiveFileName não é um arquivo zip válido.

-ou-

Nenhuma entrada de arquivo foi encontrada ou estava corrompida.

-ou-

Uma entrada de arquivo foi comprimida usando um método de compressão que não é suportado.

Exemplos

Este exemplo mostra como criar e extrair um arquivo zip usando a ZipFile classe. Comprime o conteúdo de uma pasta num arquivo zip e extrai esse conteúdo para uma nova pasta. Para usar a ZipFile classe, tens de referenciar a System.IO.Compression.FileSystem montagem no teu projeto.

using System;
using System.IO.Compression;

class Program
{
    static void Main(string[] args)
    {
        string startPath = @".\start";
        string zipPath = @".\result.zip";
        string extractPath = @".\extract";

        ZipFile.CreateFromDirectory(startPath, zipPath);

        ZipFile.ExtractToDirectory(zipPath, extractPath);
    }
}
open System.IO.Compression

let startPath = @".\start"
let zipPath = @".\result.zip"
let extractPath = @".\extract"

ZipFile.CreateFromDirectory(startPath, zipPath)

ZipFile.ExtractToDirectory(zipPath, extractPath)
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim startPath As String = ".\start"
        Dim zipPath As String = ".\result.zip"
        Dim extractPath As String = ".\extract"

        ZipFile.CreateFromDirectory(startPath, zipPath)

        ZipFile.ExtractToDirectory(zipPath, extractPath)
    End Sub

End Module

Observações

Este método cria o diretório especificado e todos os subdiretórios. O diretório de destino já não pode existir. Exceções relacionadas com a validação dos caminhos nos destinationDirectoryName parâmetros ou sourceArchiveFileName são lançadas antes da extração. Caso contrário, se ocorrer um erro durante a extração, o arquivo permanece parcialmente extraído. Cada ficheiro extraído tem o mesmo caminho relativo para o diretório especificado por destinationDirectoryName que a sua entrada de origem tem para a raiz do arquivo.

Se uma entrada no arquivo postal for um link simbólico, é extraído como uma pasta normal, já que a informação do link simbólico não é preservada no formato ZIP. Se destinationDirectoryName ou qualquer um dos seus diretórios-pais for uma junção ou ligação simbólica pré-existente, a ligação é seguida e a extração escreve na pasta de destino final.

Warning

Este método não limita o tamanho total não comprimido nem o número de entradas extraídas do arquivo. Ao processar arquivos de fontes não confiáveis, itere manualmente sobre as entradas usando ZipArchive, e valide que o tamanho total não comprimido e o número de entradas estão dentro dos limites aceitáveis para o seu cenário.

Aplica-se a

ExtractToDirectory(String, String, Boolean)

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

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, bool overwriteFiles);
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, bool overwriteFiles);
static member ExtractToDirectory : string * string * bool -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, overwriteFiles As Boolean)

Parâmetros

sourceArchiveFileName
String

O caminho no sistema de ficheiros para o arquivo que deve ser extraído.

destinationDirectoryName
String

O caminho para o diretório de destino no sistema de ficheiros.

overwriteFiles
Boolean

true sobrescrever ficheiros; false caso contrário.

Exceções

sourceArchiveFileName ou destinationDirectoryName é uma cadeia de comprimento zero, contém apenas espaços em branco, ou contém um ou mais caracteres inválidos conforme definido por InvalidPathChars.

sourceArchiveFileName ou destinationDirectoryName é null.

sourceArchiveFileName ou destinationDirectoryName especifica um caminho, um nome de ficheiro, ou ambos que excedam o comprimento máximo definido pelo sistema.

O caminho especificado por sourceArchiveFileName ou destinationDirectoryName é inválido (por exemplo, está num disco não mapeado).

overwriteFiles é false e destinationDirectoryName já contém um ficheiro com o mesmo nome de um ficheiro que está a ser extraído.

-ou-

Ocorreu um erro de E/S.

-ou-

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

-ou-

Extrair a ZipArchiveEntry resultaria num destino de ficheiro fora do diretório de destino (por exemplo, devido aos acessores de diretório pai).

-ou-

A ZipArchiveEntry tem o mesmo nome que uma entrada do mesmo arquivo que já foi extraída.

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

sourceArchiveFileName ou destinationDirectoryName está num formato inválido.

sourceArchiveFileName não foi encontrado.

O arquivo especificado por sourceArchiveFileName não é válido ZipArchive.

-ou-

A ZipArchiveEntry não foi encontrada ou estava corrompida.

-ou-

A ZipArchiveEntry foi comprimida usando um método de compressão que não é suportado.

Observações

Se houver um erro durante a extração do arquivo, este permanecerá parcialmente extraído.

Cada entrada será extraída de modo que o ficheiro extraído tenha o mesmo caminho relativo para o destinationDirectoryName que a entrada tem para o arquivo.

Os sourceArchiveFileName parâmetros e destinationDirectoryName aceitam tanto caminhos relativos como absolutos. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

Se uma entrada no arquivo postal for um link simbólico, é extraído como uma pasta normal, já que a informação do link simbólico não é preservada no formato ZIP. Se destinationDirectoryName ou qualquer um dos seus diretórios-pais for uma junção ou ligação simbólica pré-existente, a ligação é seguida e a extração escreve na pasta de destino final.

Se um ficheiro a ser arquivado tiver uma última hora modificada inválida, a primeira data e hora representáveis no formato de carimbo postal (meia-noite de 1 de janeiro de 1980) serão usadas.

Warning

Este método não limita o tamanho total não comprimido nem o número de entradas extraídas do arquivo. Ao processar arquivos de fontes não confiáveis, itere manualmente sobre as entradas usando ZipArchive, e valide que o tamanho total não comprimido e o número de entradas estão dentro dos limites aceitáveis para o seu cenário.

Aplica-se a

ExtractToDirectory(String, String, Encoding)

Extrai todos os ficheiros do arquivo zip especificado para um diretório no sistema de ficheiros e utiliza a codificação de caracteres especificada para nomes de entrada e comentários.

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding);
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding entryNameEncoding);
static member ExtractToDirectory : string * string * System.Text.Encoding -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, entryNameEncoding As Encoding)

Parâmetros

sourceArchiveFileName
String

O caminho para o arquivo que deve ser extraído.

destinationDirectoryName
String

O caminho para o diretório onde colocar os ficheiros extraídos, especificado como um caminho relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

entryNameEncoding
Encoding

A codificação a usar ao ler ou escrever nomes de entradas e comentários neste arquivo. Especifique um valor para este parâmetro apenas quando for necessária uma codificação para interoperabilidade com ferramentas de arquivo zip e bibliotecas que não suportem codificação UTF-8 para nomes de entradas ou comentários.

Exceções

destinationDirectoryName ou sourceArchiveFileName é Empty, contém apenas espaço em branco, ou contém pelo menos um carácter inválido.

-ou-

entryNameEncoding está definido para uma codificação Unicode diferente da UTF-8.

destinationDirectoryName ou sourceArchiveFileName é null.

O caminho especificado em destinationDirectoryName ou sourceArchiveFileName excede o comprimento máximo definido pelo sistema.

O caminho especificado é inválido (por exemplo, está num disco não mapeado).

O nome de uma entrada no arquivo é Empty, contém apenas espaço em branco, ou contém pelo menos um carácter inválido.

-ou-

Extrair uma entrada de arquivo criaria um ficheiro fora do diretório especificado por destinationDirectoryName. (Por exemplo, isto pode acontecer se o nome da entrada contiver acessórios de diretório pai.)

-ou-

Uma entrada de arquivo a extrair tem o mesmo nome que uma entrada que já foi extraída ou que existe em destinationDirectoryName.

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

destinationDirectoryName ou sourceArchiveFileName contém um formato inválido.

sourceArchiveFileName não foi encontrado.

O arquivo especificado por sourceArchiveFileName não é um arquivo zip válido.

-ou-

Nenhuma entrada de arquivo foi encontrada ou estava corrompida.

-ou-

Uma entrada de arquivo foi comprimida usando um método de compressão que não é suportado.

Observações

Este método cria o diretório especificado e todos os subdiretórios, se necessário. Exceções relacionadas com a validação dos caminhos nos destinationDirectoryName parâmetros ou sourceArchiveFileName são lançadas antes da extração. Caso contrário, se ocorrer um erro durante a extração, o arquivo permanece parcialmente extraído. Cada ficheiro extraído tem o mesmo caminho relativo para o diretório especificado por destinationDirectoryName que a sua entrada de origem tem para a raiz do arquivo.

Se uma entrada no arquivo postal for um link simbólico, é extraído como uma pasta normal, já que a informação do link simbólico não é preservada no formato ZIP. Se destinationDirectoryName ou qualquer um dos seus diretórios-pais for uma junção ou ligação simbólica pré-existente, a ligação é seguida e a extração escreve na pasta de destino final.

Se entryNameEncoding for definido para um valor diferente de null, os nomes das entradas e os comentários são decodificados de acordo com as seguintes regras:

  • Para entradas onde o flag de codificação da linguagem (no flag de bit de uso geral do cabeçalho local do ficheiro) não está definido, os nomes das entradas e comentários são decodificados usando a codificação especificada.
  • Para entradas onde o flag de codificação da linguagem está definido, os nomes das entradas e comentários são decodificados usando UTF-8.

Se entryNameEncoding for definido para null, os nomes das entradas e os comentários são decodificados de acordo com as seguintes regras:

  • Para entradas onde o flag de codificação da linguagem (no flag de bit de uso geral do cabeçalho local do ficheiro) não está definido, os nomes das entradas e comentários são descodificados usando a página de código padrão do sistema atual.
  • Para entradas onde o flag de codificação da linguagem está definido, os nomes das entradas e comentários são decodificados usando UTF-8.

Warning

Este método não limita o tamanho total não comprimido nem o número de entradas extraídas do arquivo. Ao processar arquivos de fontes não confiáveis, itere manualmente sobre as entradas usando ZipArchive, e valide que o tamanho total não comprimido e o número de entradas estão dentro dos limites aceitáveis para o seu cenário.

Aplica-se a

ExtractToDirectory(String, String, Encoding, Boolean)

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

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding, bool overwriteFiles);
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding entryNameEncoding, bool overwriteFiles);
static member ExtractToDirectory : string * string * System.Text.Encoding * bool -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, entryNameEncoding As Encoding, overwriteFiles As Boolean)

Parâmetros

sourceArchiveFileName
String

O caminho no sistema de ficheiros para o arquivo que deve ser extraído.

destinationDirectoryName
String

O caminho para o diretório de destino no sistema de ficheiros.

entryNameEncoding
Encoding

A codificação a usar ao ler nomes de entradas e comentários neste ZipArchive.

overwriteFiles
Boolean

true sobrescrever ficheiros; false caso contrário.

Exceções

sourceArchiveFileName ou destinationDirectoryName é uma cadeia de comprimento zero, contém apenas espaços em branco, ou contém um ou mais caracteres inválidos conforme definido por InvalidPathChars.

-ou-

entryNameEncoding está definido para uma codificação Unicode diferente da UTF-8.

sourceArchiveFileName ou destinationDirectoryName é null.

sourceArchiveFileName ou destinationDirectoryName especifica um caminho, um nome de ficheiro, ou ambos que excedam o comprimento máximo definido pelo sistema.

O caminho especificado por sourceArchiveFileName ou destinationDirectoryName é inválido (por exemplo, está num disco não mapeado).

overwriteFiles é false e uma entrada de arquivo para extrair tem o mesmo nome que um ficheiro que já existe em destinationDirectoryName.

-ou-

Ocorreu um erro de E/S.

-ou-

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

-ou-

Extrair a ZipArchiveEntry resultaria num destino de ficheiro fora do diretório de destino (por exemplo, devido aos acessores de diretório pai).

-ou-

A ZipArchiveEntry tem o mesmo nome que uma entrada já extraída do mesmo arquivo.

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

sourceArchiveFileName ou destinationDirectoryName está num formato inválido.

sourceArchiveFileName não foi encontrado.

O arquivo especificado por sourceArchiveFileName não é válido ZipArchive.

-ou-

Nenhuma entrada de arquivo foi encontrada ou estava corrompida.

-ou-

Uma entrada de arquivo foi comprimida usando um método de compressão que não é suportado.

Observações

Se houver um erro durante a extração do arquivo, este permanecerá parcialmente extraído.

Cada entrada será extraída de modo que o ficheiro extraído tenha o mesmo caminho relativo para o destinationDirectoryName que a entrada tem para o arquivo.

Os sourceArchiveFileName parâmetros e destinationDirectoryName aceitam tanto caminhos relativos como absolutos. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

Se uma entrada no arquivo postal for um link simbólico, é extraído como uma pasta normal, já que a informação do link simbólico não é preservada no formato ZIP. Se destinationDirectoryName ou qualquer um dos seus diretórios-pais for uma junção ou ligação simbólica pré-existente, a ligação é seguida e a extração escreve na pasta de destino final.

Se um ficheiro a ser arquivado tiver uma última hora modificada inválida, a primeira data e hora representáveis no formato de carimbo postal (meia-noite de 1 de janeiro de 1980) serão usadas.

Warning

Este método não limita o tamanho total não comprimido nem o número de entradas extraídas do arquivo. Ao processar arquivos de fontes não confiáveis, itere manualmente sobre as entradas usando ZipArchive, e valide que o tamanho total não comprimido e o número de entradas estão dentro dos limites aceitáveis para o seu cenário.

Aplica-se a