ZipFile.ExtractToDirectory Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.