ZipFile.ExtractToDirectory Método

Definição

Extrai todos os arquivos no arquivo zip especificado em um diretório do sistema de arquivos.Extracts all the files in the specified zip archive to a directory on the file system.

Sobrecargas

ExtractToDirectory(String, String)

Extrai todos os arquivos no arquivo zip especificado em um diretório do sistema de arquivos.Extracts all the files in the specified zip archive to a directory on the file system.

ExtractToDirectory(String, String, Boolean)

Extrai todos os arquivos dos arquivos especificados para um diretório do sistema de arquivos.Extracts all of the files in the specified archive to a directory on the file system.

ExtractToDirectory(String, String, Encoding)

Extrai todos os arquivos no arquivo zip especificado para um diretório no sistema de arquivos e usa a codificação de caracteres especificada para nomes de entrada.Extracts all the files in the specified zip archive to a directory on the file system and uses the specified character encoding for entry names.

ExtractToDirectory(String, String, Encoding, Boolean)

Extrai todos os arquivos dos arquivos especificados para um diretório do sistema de arquivos.Extracts all of the files in the specified archive to a directory on the file system.

ExtractToDirectory(String, String)

Extrai todos os arquivos no arquivo zip especificado em um diretório do sistema de arquivos.Extracts all the files in the specified zip archive to a directory on the file system.

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 morto a ser extraído.The path to the archive that is to be extracted.

destinationDirectoryName
String

O caminho para o diretório no qual os arquivos extraídos serão colocados, especificado como um caminho relativo ou absoluto.The path to the directory in which to place the extracted files, specified as a relative or absolute path. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.A relative path is interpreted as relative to the current working directory.

Exceções

destinationDirectoryName ou sourceArchiveFileName é Empty, contém somente espaços em branco ou, pelo menos, um caractere inválido.destinationDirectoryName or sourceArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

destinationDirectoryName ou sourceArchiveFileName é null.destinationDirectoryName or sourceArchiveFileName is null.

O caminho especificado no destinationDirectoryName ou sourceArchiveFileName excede o tamanho máximo definido pelo sistema.The specified path in destinationDirectoryName or sourceArchiveFileName exceeds the system-defined maximum length.

O caminho especificado é inválido (por exemplo, ele está em uma unidade não mapeada).The specified path is invalid (for example, it is on an unmapped drive).

O diretório especificado por destinationDirectoryName já existe.The directory specified by destinationDirectoryName already exists.

- ou --or- O nome de uma entrada no arquivo morto é Empty, contém somente espaços em branco ou, pelo menos, um caractere inválido.The name of an entry in the archive is Empty, contains only white space, or contains at least one invalid character.

- ou --or- A extração de uma entrada de arquivo morto criará um arquivo que está fora do diretório especificado por destinationDirectoryName.Extracting an archive entry would create a file that is outside the directory specified by destinationDirectoryName. (Por exemplo, isso poderá acontecer se o nome da entrada contiver acessadores de diretório pai.)(For example, this might happen if the entry name contains parent directory accessors.) - ou --or- Uma entrada de arquivo morto a ser extraída tem o mesmo nome que uma entrada que já foi extraída do mesmo arquivo.An archive entry to extract has the same name as an entry that has already been extracted from the same archive.

O chamador não tem a permissão necessária para acessar o arquivo morto ou o diretório de destino.The caller does not have the required permission to access the archive or the destination directory.

destinationDirectoryName ou sourceArchiveFileName contém um formato inválido.destinationDirectoryName or sourceArchiveFileName contains an invalid format.

sourceArchiveFileName não foi encontrado.sourceArchiveFileName was not found.

O arquivo especificado por sourceArchiveFileName não é um arquivo zip válido.The archive specified by sourceArchiveFileName is not a valid zip archive.

- ou --or- Uma entrada de arquivo morto não foi encontrada ou foi corrompida.An archive entry was not found or was corrupt.

- ou --or- Uma entrada de arquivo morto foi compactada usando um método de compactação sem suporte.An archive entry was compressed by using a compression method that is not supported.

Exemplos

Este exemplo mostra como criar e extrair um arquivo zip usando a ZipFile classe.This example shows how to create and extract a zip archive by using the ZipFile class. Ele compacta o conteúdo de uma pasta em um arquivo zip e extrai esse conteúdo para uma nova pasta.It compresses the contents of a folder into a zip archive and extracts that content to a new folder. Para usar a classe ZipFile, você deve fazer referência ao assembly System.IO.Compression.FileSystem em seu projeto.To use the ZipFile class, you must reference the System.IO.Compression.FileSystem assembly in your project.

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

Comentários

Esse método cria o diretório e todos os subdiretórios especificados.This method creates the specified directory and all subdirectories. Não é possível que o diretório de destino já exista.The destination directory cannot already exist. As exceções relacionadas à validação dos caminhos nos destinationDirectoryName sourceArchiveFileName parâmetros ou são geradas antes da extração.Exceptions related to validating the paths in the destinationDirectoryName or sourceArchiveFileName parameters are thrown before extraction. Caso contrário, se ocorrer um erro durante a extração, o arquivo permanecerá extraído parcialmente.Otherwise, if an error occurs during extraction, the archive remains partially extracted. Cada arquivo extraído tem o mesmo caminho relativo para o diretório especificado por destinationDirectoryName , pois sua entrada de origem tem a raiz do arquivo morto.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.

Aplica-se a

ExtractToDirectory(String, String, Boolean)

Extrai todos os arquivos dos arquivos especificados para um diretório do sistema de arquivos.Extracts all of the files in the specified archive to a directory on the file system.

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 arquivos para os arquivos que devem ser extraídos.The path on the file system to the archive that is to be extracted.

destinationDirectoryName
String

O caminho para o diretório de destino no sistema de arquivos.The path to the destination directory on the file system. O diretório especificado não deve existir, mas o diretório no qual ele está contido precisa existir.The directory specified must not exist, but the directory that it is contained in must exist.

overwriteFiles
Boolean

true para substituir arquivos; caso contrário, false.true to overwrite files; false otherwise.

Exceções

sourceArchiveFileName ou destinationDirectoryName é 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.sourceArchiveFileName or destinationDirectoryName is a zero-length string, contains only whitespace, or contains one or more invalid characters as defined by InvalidPathChars.

sourceArchiveFileName ou destinationDirectoryName é null.sourceArchiveFileName or destinationDirectoryName is null.

sourceArchiveFileName ou destinationDirectoryName especifica um caminho, um nome de arquivo ou ambos que excedem o tamanho máximo definido pelo sistema.sourceArchiveFileName or destinationDirectoryName specifies a path, a file name, or both that exceed the system-defined maximum length.

O caminho especificado por sourceArchiveFileName ou destinationDirectoryName é inválido (por exemplo, ele está em uma unidade não mapeada).The path specified by sourceArchiveFileName or destinationDirectoryName is invalid (for example, it is on an unmapped drive).

O diretório especificado por destinationDirectoryName já existe.The directory specified by destinationDirectoryName already exists.

- ou --or-

Ocorreu um erro de E/S.An I/O error has occurred.

- ou --or-

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.The name of a ZipArchiveEntry is zero-length, contains only whitespace, or contains one or more invalid characters as defined by InvalidPathChars.

- ou --or-

A extração de uma ZipArchiveEntry resulta em um destino de arquivo que está fora do diretório de destino (por exemplo, devido aos acessadores de diretório pai).Extracting a ZipArchiveEntry would result in a file destination that is outside the destination directory (for example, because of parent directory accessors).

- ou --or-

Uma ZipArchiveEntry tem o mesmo nome de uma entrada já extraída dos mesmos arquivos.A ZipArchiveEntry has the same name as an already extracted entry from the same archive.

O chamador não tem a permissão necessária.The caller does not have the required permission.

sourceArchiveFileName ou destinationDirectoryName está em um formato inválido.sourceArchiveFileName or destinationDirectoryName is in an invalid format.

sourceArchiveFileName não foi encontrado.sourceArchiveFileName was not found.

Os arquivos especificados por sourceArchiveFileName não são ZipArchive válidos.The archive specified by sourceArchiveFileName is not a valid ZipArchive.

- ou --or-

Uma ZipArchiveEntry não foi encontrada ou estava corrompida.A ZipArchiveEntry was not found or was corrupt.

- ou --or-

Uma ZipArchiveEntry foi compactada usando um método de compactação sem suporte.A ZipArchiveEntry has been compressed using a compression method that is not supported.

Comentários

O diretório especificado não deve existir.The specified directory must not exist. O método cria o diretório e todos os subdiretórios especificados.The method creates the specified directory and all subdirectories.

Se houver um erro ao extrair o arquivo morto, o arquivo permanecerá extraído parcialmente.If there is an error while extracting the archive, the archive will remain partially extracted.

Cada entrada será extraída de modo que o arquivo extraído tenha o mesmo caminho relativo para o destinationDirectoryName , pois a entrada tem o arquivo morto.Each entry will be extracted such that the extracted file has the same relative path to the destinationDirectoryName as the entry has to the archive.

O caminho pode especificar informações de caminho relativo ou absoluto.The path can specify relative or absolute path information. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.A relative path is interpreted as relative to the current working directory.

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 hora zip (meia-noite em 1º de janeiro de 1980) serão usadas.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.

Aplica-se a

ExtractToDirectory(String, String, Encoding)

Extrai todos os arquivos no arquivo zip especificado para um diretório no sistema de arquivos e usa a codificação de caracteres especificada para nomes de entrada.Extracts all the files in the specified zip archive to a directory on the file system and uses the specified character encoding for entry names.

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);
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 morto a ser extraído.The path to the archive that is to be extracted.

destinationDirectoryName
String

O caminho para o diretório no qual os arquivos extraídos serão colocados, especificado como um caminho relativo ou absoluto.The path to the directory in which to place the extracted files, specified as a relative or absolute path. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.A relative path is interpreted as relative to the current working directory.

entryNameEncoding
Encoding

A codificação a ser usada ao ler ou gravar nomes de entrada nesse arquivo.The encoding to use when reading or writing entry names in this archive. Especifique um valor para esse parâmetro somente quando uma codificação for necessária para a interoperabilidade com ferramentas de arquivo zip e bibliotecas que não dão suporte à codificação UTF-8 para nomes de entrada.Specify a value for this parameter only when an encoding is required for interoperability with zip archive tools and libraries that do not support UTF-8 encoding for entry names.

Exceções

destinationDirectoryName ou sourceArchiveFileName é Empty, contém somente espaços em branco ou, pelo menos, um caractere inválido.destinationDirectoryName or sourceArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

- ou --or- entryNameEncoding é definido com uma codificação Unicode diferente de UTF-8.entryNameEncoding is set to a Unicode encoding other than UTF-8.

destinationDirectoryName ou sourceArchiveFileName é null.destinationDirectoryName or sourceArchiveFileName is null.

O caminho especificado no destinationDirectoryName ou sourceArchiveFileName excede o tamanho máximo definido pelo sistema.The specified path in destinationDirectoryName or sourceArchiveFileName exceeds the system-defined maximum length.

O caminho especificado é inválido (por exemplo, ele está em uma unidade não mapeada).The specified path is invalid (for example, it is on an unmapped drive).

O diretório especificado por destinationDirectoryName já existe.The directory specified by destinationDirectoryName already exists.

- ou --or- O nome de uma entrada no arquivo morto é Empty, contém somente espaços em branco ou, pelo menos, um caractere inválido.The name of an entry in the archive is Empty, contains only white space, or contains at least one invalid character.

- ou --or- A extração de uma entrada de arquivo morto criará um arquivo que está fora do diretório especificado por destinationDirectoryName.Extracting an archive entry would create a file that is outside the directory specified by destinationDirectoryName. (Por exemplo, isso poderá acontecer se o nome da entrada contiver acessadores de diretório pai.)(For example, this might happen if the entry name contains parent directory accessors.) - ou --or- Uma entrada de arquivo morto a ser extraída tem o mesmo nome que uma entrada que já foi extraída do mesmo arquivo.An archive entry to extract has the same name as an entry that has already been extracted from the same archive.

O chamador não tem a permissão necessária para acessar o arquivo morto ou o diretório de destino.The caller does not have the required permission to access the archive or the destination directory.

destinationDirectoryName ou sourceArchiveFileName contém um formato inválido.destinationDirectoryName or sourceArchiveFileName contains an invalid format.

sourceArchiveFileName não foi encontrado.sourceArchiveFileName was not found.

O arquivo especificado por sourceArchiveFileName não é um arquivo zip válido.The archive specified by sourceArchiveFileName is not a valid zip archive.

- ou --or- Uma entrada de arquivo morto não foi encontrada ou foi corrompida.An archive entry was not found or was corrupt.

- ou --or- Uma entrada de arquivo morto foi compactada usando um método de compactação sem suporte.An archive entry was compressed by using a compression method that is not supported.

Comentários

Esse método cria o diretório e todos os subdiretórios especificados.This method creates the specified directory and all subdirectories. Não é possível que o diretório de destino já exista.The destination directory cannot already exist. As exceções relacionadas à validação dos caminhos nos destinationDirectoryName sourceArchiveFileName parâmetros ou são geradas antes da extração.Exceptions related to validating the paths in the destinationDirectoryName or sourceArchiveFileName parameters are thrown before extraction. Caso contrário, se ocorrer um erro durante a extração, o arquivo permanecerá extraído parcialmente.Otherwise, if an error occurs during extraction, the archive remains partially extracted. Cada arquivo extraído tem o mesmo caminho relativo para o diretório especificado por destinationDirectoryName , pois sua entrada de origem tem a raiz do arquivo morto.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.

Se entryNameEncoding é definido com um valor diferente de null , os nomes de entrada são decodificados de acordo com as seguintes regras:If entryNameEncoding is set to a value other than null, entry names are decoded according to the following rules:

  • Para nomes de entrada em que o sinalizador de codificação de idioma (no sinalizador de bit de uso geral do cabeçalho do arquivo local) não está definido, os nomes de entrada são decodificados usando a codificação especificada.For entry names where the language encoding flag (in the general-purpose bit flag of the local file header) is not set, the entry names are decoded by using the specified encoding.

  • Para entradas em que o sinalizador de codificação de idioma está definido, os nomes de entrada são decodificados usando UTF-8.For entries where the language encoding flag is set, the entry names are decoded by using UTF-8.

Se entryNameEncoding é definido como null , os nomes de entrada são decodificados de acordo com as seguintes regras:If entryNameEncoding is set to null, entry names are decoded according to the following rules:

  • Para entradas em que o sinalizador de codificação de idioma (no sinalizador de bit de uso geral do cabeçalho do arquivo local) não está definido, os nomes de entrada são decodificados usando a página de código padrão do sistema atual.For entries where the language encoding flag (in the general-purpose bit flag of the local file header) is not set, entry names are decoded by using the current system default code page.

  • Para entradas em que o sinalizador de codificação de idioma está definido, os nomes de entrada são decodificados usando UTF-8.For entries where the language encoding flag is set, the entry names are decoded by using UTF-8.

Aplica-se a

ExtractToDirectory(String, String, Encoding, Boolean)

Extrai todos os arquivos dos arquivos especificados para um diretório do sistema de arquivos.Extracts all of the files in the specified archive to a directory on the file system.

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);
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 arquivos para os arquivos que devem ser extraídos.The path on the file system to the archive that is to be extracted.

destinationDirectoryName
String

O caminho para o diretório de destino no sistema de arquivos.The path to the destination directory on the file system. O diretório especificado não deve existir, mas o diretório no qual ele está contido precisa existir.The directory specified must not exist, but the directory that it is contained in must exist.

entryNameEncoding
Encoding

A codificação a ser usada ao ler nomes de entrada neste ZipArchive.The encoding to use when reading entry names in this ZipArchive.

overwriteFiles
Boolean

true para substituir arquivos; caso contrário, false.true to overwrite files; false otherwise.

Exceções

sourceArchiveFileName ou destinationDirectoryName é 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.sourceArchiveFileName or destinationDirectoryName is a zero-length string, contains only whitespace, or contains one or more invalid characters as defined by InvalidPathChars.

- ou --or- entryNameEncoding é definido com uma codificação Unicode diferente de UTF-8.entryNameEncoding is set to a Unicode encoding other than UTF-8.

sourceArchiveFileName ou destinationDirectoryName é null.sourceArchiveFileName or destinationDirectoryName is null.

sourceArchiveFileName ou destinationDirectoryName especifica um caminho, um nome de arquivo ou ambos que excedem o tamanho máximo definido pelo sistema.sourceArchiveFileName or destinationDirectoryName specifies a path, a file name, or both that exceed the system-defined maximum length.

O caminho especificado por sourceArchiveFileName ou destinationDirectoryName é inválido (por exemplo, ele está em uma unidade não mapeada).The path specified by sourceArchiveFileName or destinationDirectoryName is invalid (for example, it is on an unmapped drive).

O diretório especificado por destinationDirectoryName já existe.The directory specified by destinationDirectoryName already exists.

- ou --or-

Ocorreu um erro de E/S.An I/O error has occurred.

- ou --or-

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.The name of a ZipArchiveEntry is zero-length, contains only whitespace, or contains one or more invalid characters as defined by InvalidPathChars.

- ou --or-

A extração de uma ZipArchiveEntry resulta em um destino de arquivo que está fora do diretório de destino (por exemplo, devido aos acessadores de diretório pai).Extracting a ZipArchiveEntry would result in a file destination that is outside the destination directory (for example, because of parent directory accessors).

- ou --or-

Uma ZipArchiveEntry tem o mesmo nome de uma entrada já extraída dos mesmos arquivos.A ZipArchiveEntry has the same name as an already extracted entry from the same archive.

O chamador não tem a permissão necessária.The caller does not have the required permission.

sourceArchiveFileName ou destinationDirectoryName está em um formato inválido.sourceArchiveFileName or destinationDirectoryName is in an invalid format.

sourceArchiveFileName não foi encontrado.sourceArchiveFileName was not found.

Os arquivos especificados por sourceArchiveFileName não são ZipArchive válidos.The archive specified by sourceArchiveFileName is not a valid ZipArchive.

- ou --or-

Uma entrada de arquivo morto não foi encontrada ou foi corrompida.An archive entry was not found or was corrupt.

- ou --or-

Uma entrada de arquivos foi compactada usando um método de compactação sem suporte.An archive entry has been compressed using a compression method that is not supported.

Comentários

O diretório especificado não deve existir.The specified directory must not exist. Esse método criará o diretório especificado e todos os subdiretórios.This method will create the specified directory and all subdirectories.

Se houver um erro ao extrair o arquivo morto, o arquivo permanecerá extraído parcialmente.If there is an error while extracting the archive, the archive will remain partially extracted.

Cada entrada será extraída de modo que o arquivo extraído tenha o mesmo caminho relativo para o destinationDirectoryName , pois a entrada tem o arquivo morto.Each entry will be extracted such that the extracted file has the same relative path to the destinationDirectoryName as the entry has to the archive.

O caminho pode especificar informações de caminho relativo ou absoluto.The path can specify relative or absolute path information. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.A relative path is interpreted as relative to the current working directory.

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 hora zip (meia-noite em 1º de janeiro de 1980) serão usadas.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.

Aplica-se a