ZipFile.CreateFromDirectory Método

Definição

Cria um arquivo zip que contém os arquivos e diretórios da pasta especificada.

Sobrecargas

CreateFromDirectory(String, Stream)

Cria um arquivo zip no fluxo especificado que contém os arquivos e diretórios do diretório especificado.

CreateFromDirectory(String, String)

Cria um arquivo zip que contém os arquivos e diretórios da pasta especificada.

CreateFromDirectory(String, Stream, CompressionLevel, Boolean)

Cria um arquivo zip no fluxo especificado que contém os arquivos e diretórios do diretório especificado, usa o nível de compactação especificado e, opcionalmente, inclui o diretório base.

CreateFromDirectory(String, String, CompressionLevel, Boolean)

Cria um arquivo zip que contém os arquivos e diretórios do diretório especificado, usa o nível de compactação especificado e opcionalmente inclui o diretório base.

CreateFromDirectory(String, Stream, CompressionLevel, Boolean, Encoding)

Cria um arquivo zip no fluxo especificado que contém os arquivos e diretórios do diretório especificado, usa o nível de compactação especificado e a codificação de caracteres para nomes de entrada e, opcionalmente, inclui o diretório base.

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

Cria um arquivo zip que contém os arquivos e diretórios do diretório especificado, usa o nível de compactação especificado e codificação de caracteres para nomes de entrada e, como opção, inclui o diretório base.

CreateFromDirectory(String, Stream)

Origem:
ZipFile.Create.cs
Origem:
ZipFile.Create.cs

Cria um arquivo zip no fluxo especificado que contém os arquivos e diretórios do diretório especificado.

public static void CreateFromDirectory (string sourceDirectoryName, System.IO.Stream destination);

Parâmetros

sourceDirectoryName
String

O caminho para o diretório a ser arquivado, especificado como um caminho relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

destination
Stream

O fluxo em que o arquivo zip deve ser armazenado.

Exceções

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

- ou -

O destination fluxo não dá suporte à gravação.

sourceDirectoryName ou destination é null.

No sourceDirectoryName caminho especificado, o nome do arquivo ou ambos excedem o comprimento máximo definido pelo sistema.

sourceDirectoryName é inválido ou não existe (por exemplo, ele está em uma unidade não mapeada).

Não foi possível abrir um arquivo no diretório especificado.

- ou -

Ocorreu um erro de E/S ao abrir um arquivo a ser arquivado.

sourceDirectoryName contém um formato inválido.

Comentários

A estrutura de diretório do sistema de arquivos é preservada no arquivo morto. Se o diretório estiver vazio, um arquivo morto vazio será criado. Essa sobrecarga de método não inclui o diretório base no arquivo morto e não permite que você especifique um nível de compactação. Se você quiser incluir o diretório base ou especificar um nível de compactação, chame a sobrecarga do CreateFromDirectory(String, Stream, CompressionLevel, Boolean) método. Se um arquivo no diretório não puder ser adicionado ao arquivo morto, o arquivo será deixado incompleto e inválido e o método gerará uma exceção IOException .

Aplica-se a

.NET 9 e .NET 8
Produto Versões
.NET 8, 9

CreateFromDirectory(String, String)

Origem:
ZipFile.Create.cs
Origem:
ZipFile.Create.cs
Origem:
ZipFile.Create.cs

Cria um arquivo zip que contém os arquivos e diretórios da pasta especificada.

public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName);

Parâmetros

sourceDirectoryName
String

O caminho para o diretório a ser arquivado, especificado como um caminho relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

destinationArchiveFileName
String

O caminho do arquivo morto a ser criado, especificado como um caminho relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

Exceções

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

sourceDirectoryName ou destinationArchiveFileName é null.

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

sourceDirectoryName é inválido ou não existe (por exemplo, ele está em uma unidade não mapeada).

destinationArchiveFileName já existe.

- ou -

Não foi possível abrir um arquivo no diretório especificado.

- ou -

Ocorreu um erro de E/S ao abrir um arquivo a ser arquivado.

destinationArchiveFileName especifica um diretório.

- ou -

O chamador não tem a permissão necessária para acessar o diretório especificado em sourceDirectoryName ou o arquivo especificado em destinationArchiveFileName.

sourceDirectoryName ou destinationArchiveFileName contém um formato inválido.

- ou -

O arquivo zip não dá suporte à gravação.

Exemplos

Este exemplo mostra como criar e extrair um arquivo zip usando a ZipFile classe . Ele compacta o conteúdo de uma pasta em um arquivo zip e extrai esse conteúdo para uma nova pasta. Para usar a classe ZipFile, você deve fazer referência ao assembly System.IO.Compression.FileSystem em seu 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);
    }
}

Comentários

A estrutura de diretório do sistema de arquivos é preservada no arquivo morto. Se o diretório estiver vazio, um arquivo morto vazio será criado. Essa sobrecarga de método não inclui o diretório base no arquivo morto e não permite que você especifique um nível de compactação. Se você quiser incluir o diretório base ou especificar um nível de compactação, chame a sobrecarga do CreateFromDirectory(String, String, CompressionLevel, Boolean) método.

Se o arquivo já existir, uma exceção IOException será gerada. Se uma entrada com o nome especificado já existir no arquivo morto, uma segunda entrada será criada com um nome idêntico.

Se um arquivo no diretório não puder ser adicionado ao arquivo morto, o arquivo será deixado incompleto e inválido e o método gerará uma exceção IOException .

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

CreateFromDirectory(String, Stream, CompressionLevel, Boolean)

Origem:
ZipFile.Create.cs
Origem:
ZipFile.Create.cs

Cria um arquivo zip no fluxo especificado que contém os arquivos e diretórios do diretório especificado, usa o nível de compactação especificado e, opcionalmente, inclui o diretório base.

public static void CreateFromDirectory (string sourceDirectoryName, System.IO.Stream destination, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory);

Parâmetros

sourceDirectoryName
String

O caminho para o diretório a ser arquivado, especificado como um caminho relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

destination
Stream

O fluxo em que o arquivo zip deve ser armazenado.

compressionLevel
CompressionLevel

Um dos valores de enumeração que indica se é necessário enfatizar a eficiência de compactação ou velocidade ao criar a entrada.

includeBaseDirectory
Boolean

true para incluir o nome do diretório de sourceDirectoryName na raiz do arquivo morto, false para incluir somente o conteúdo do diretório.

Exceções

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

- ou -

O destination fluxo não dá suporte à gravação.

sourceDirectoryName ou destination é null.

No sourceDirectoryName caminho especificado, o nome do arquivo ou ambos excedem o comprimento máximo definido pelo sistema.

sourceDirectoryName é inválido ou não existe (por exemplo, ele está em uma unidade não mapeada).

Não foi possível abrir um arquivo no diretório especificado.

- ou -

Ocorreu um erro de E/S ao abrir um arquivo a ser arquivado.

sourceDirectoryName contém um formato inválido.

compressionLevel não é um valor CompressionLevel válido.

Comentários

A estrutura de diretório do sistema de arquivos é preservada no arquivo morto. Se o diretório estiver vazio, um arquivo morto vazio será criado. Use essa sobrecarga de método para especificar o nível de compactação e se deve incluir o diretório base no arquivo morto. Se um arquivo no diretório não puder ser adicionado ao arquivo morto, o arquivo será deixado incompleto e inválido e o método gerará uma exceção IOException .

Aplica-se a

.NET 9 e .NET 8
Produto Versões
.NET 8, 9

CreateFromDirectory(String, String, CompressionLevel, Boolean)

Origem:
ZipFile.Create.cs
Origem:
ZipFile.Create.cs
Origem:
ZipFile.Create.cs

Cria um arquivo zip que contém os arquivos e diretórios do diretório especificado, usa o nível de compactação especificado e opcionalmente inclui o diretório base.

public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory);

Parâmetros

sourceDirectoryName
String

O caminho para o diretório a ser arquivado, especificado como um caminho relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

destinationArchiveFileName
String

O caminho do arquivo morto a ser criado, especificado como um caminho relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

compressionLevel
CompressionLevel

Um dos valores de enumeração que indica se é necessário enfatizar a eficiência de compactação ou velocidade ao criar a entrada.

includeBaseDirectory
Boolean

true para incluir o nome do diretório de sourceDirectoryName na raiz do arquivo morto, false para incluir somente o conteúdo do diretório.

Exceções

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

sourceDirectoryName ou destinationArchiveFileName é null.

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

sourceDirectoryName é inválido ou não existe (por exemplo, ele está em uma unidade não mapeada).

destinationArchiveFileName já existe.

- ou -

Não foi possível abrir um arquivo no diretório especificado.

- ou -

Ocorreu um erro de E/S ao abrir um arquivo a ser arquivado.

destinationArchiveFileName especifica um diretório.

- ou -

O chamador não tem a permissão necessária para acessar o diretório especificado em sourceDirectoryName ou o arquivo especificado em destinationArchiveFileName.

sourceDirectoryName ou destinationArchiveFileName contém um formato inválido.

- ou -

O arquivo zip não dá suporte à gravação.

Exemplos

Este exemplo mostra como criar e extrair um arquivo zip usando a ZipFile classe . Ele compacta o conteúdo de uma pasta em um arquivo zip e extrai esse conteúdo para uma nova pasta. Ao compactar o arquivo morto, o diretório base é incluído e o nível de compactação é definido para enfatizar a velocidade da operação em relação à eficiência. Para usar a classe ZipFile, você deve fazer referência ao assembly System.IO.Compression.FileSystem em seu projeto.

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

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

            ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true);

            ZipFile.ExtractToDirectory(zipPath, extractPath);
        }
    }
}

Comentários

A estrutura de diretório do sistema de arquivos é preservada no arquivo morto. Se o diretório estiver vazio, um arquivo vazio será criado. Use essa sobrecarga de método para especificar o nível de compactação e se deve incluir o diretório base no arquivo morto.

Se o arquivo morto já existir, uma exceção IOException será gerada. Se uma entrada com o nome especificado já existir no arquivo morto, uma segunda entrada será criada com um nome idêntico.

Se um arquivo no diretório não puder ser adicionado ao arquivo morto, o arquivo será deixado incompleto e inválido e o método gerará uma exceção IOException .

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

CreateFromDirectory(String, Stream, CompressionLevel, Boolean, Encoding)

Origem:
ZipFile.Create.cs
Origem:
ZipFile.Create.cs

Cria um arquivo zip no fluxo especificado que contém os arquivos e diretórios do diretório especificado, usa o nível de compactação especificado e a codificação de caracteres para nomes de entrada e, opcionalmente, inclui o diretório base.

public static void CreateFromDirectory (string sourceDirectoryName, System.IO.Stream destination, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding? entryNameEncoding);

Parâmetros

sourceDirectoryName
String

O caminho para o diretório a ser arquivado, especificado como um caminho relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

destination
Stream

O fluxo em que o arquivo zip deve ser armazenado.

compressionLevel
CompressionLevel

Um dos valores de enumeração que indica se é necessário enfatizar a eficiência de compactação ou velocidade ao criar a entrada.

includeBaseDirectory
Boolean

true para incluir o nome do diretório de sourceDirectoryName na raiz do arquivo morto, false para incluir somente o conteúdo do diretório.

entryNameEncoding
Encoding

A codificação a ser usada ao ler ou gravar nomes de entrada nesse arquivo. 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.

Exceções

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

- ou -

O destination fluxo não dá suporte à gravação.

sourceDirectoryName ou destination é null.

No sourceDirectoryName caminho especificado, o nome do arquivo ou ambos excedem o comprimento máximo definido pelo sistema.

sourceDirectoryName é inválido ou não existe (por exemplo, ele está em uma unidade não mapeada).

Não foi possível abrir um arquivo no diretório especificado.

- ou -

Ocorreu um erro de E/S ao abrir um arquivo a ser arquivado.

sourceDirectoryName contém um formato inválido.

compressionLevel não é um valor CompressionLevel válido.

Comentários

A estrutura de diretório do sistema de arquivos é preservada no arquivo morto. Se o diretório estiver vazio, um arquivo vazio será criado. Use essa sobrecarga de método para especificar o nível de compactação e a codificação de caracteres e se deseja incluir o diretório base no arquivo morto. Se um arquivo no diretório não puder ser adicionado ao arquivo morto, o arquivo será deixado incompleto e inválido e o método gerará uma exceção IOException .

Aplica-se a

.NET 9 e .NET 8
Produto Versões
.NET 8, 9

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

Origem:
ZipFile.Create.cs
Origem:
ZipFile.Create.cs
Origem:
ZipFile.Create.cs

Cria um arquivo zip que contém os arquivos e diretórios do diretório especificado, usa o nível de compactação especificado e codificação de caracteres para nomes de entrada e, como opção, inclui o diretório base.

public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding entryNameEncoding);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding? entryNameEncoding);

Parâmetros

sourceDirectoryName
String

O caminho para o diretório a ser arquivado, especificado como um caminho relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

destinationArchiveFileName
String

O caminho do arquivo morto a ser criado, especificado como um caminho relativo ou absoluto. Um caminho relativo é interpretado como relativo ao diretório de trabalho atual.

compressionLevel
CompressionLevel

Um dos valores de enumeração que indica se é necessário enfatizar a eficiência de compactação ou velocidade ao criar a entrada.

includeBaseDirectory
Boolean

true para incluir o nome do diretório de sourceDirectoryName na raiz do arquivo morto, false para incluir somente o conteúdo do diretório.

entryNameEncoding
Encoding

A codificação a ser usada ao ler ou gravar nomes de entrada nesse arquivo. 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.

Exceções

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

- ou -

entryNameEncoding é definido com uma codificação Unicode diferente de UTF-8.

sourceDirectoryName ou destinationArchiveFileName é null.

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

sourceDirectoryName é inválido ou não existe (por exemplo, ele está em uma unidade não mapeada).

destinationArchiveFileName já existe.

- ou -

Não foi possível abrir um arquivo no diretório especificado.

- ou -

Ocorreu um erro de E/S ao abrir um arquivo a ser arquivado.

destinationArchiveFileName especifica um diretório.

- ou -

O chamador não tem a permissão necessária para acessar o diretório especificado em sourceDirectoryName ou o arquivo especificado em destinationArchiveFileName.

sourceDirectoryName ou destinationArchiveFileName contém um formato inválido.

- ou -

O arquivo zip não dá suporte à gravação.

Comentários

A estrutura de diretório do sistema de arquivos é preservada no arquivo morto. Se o diretório estiver vazio, um arquivo vazio será criado. Use essa sobrecarga de método para especificar o nível de compactação e a codificação de caracteres e se deseja incluir o diretório base no arquivo morto.

Se o arquivo morto já existir, uma exceção IOException será gerada. Se uma entrada com o nome especificado já existir no arquivo morto, uma segunda entrada será criada com um nome idêntico.

Se um arquivo no diretório não puder ser adicionado ao arquivo morto, o arquivo será deixado incompleto e inválido e o método gerará uma exceção IOException .

Se entryNameEncoding for definido como um valor diferente nullde , os nomes de entrada serão codificados usando a codificação especificada. Se a codificação especificada for UTF-8, o sinalizador de codificação de idioma (no sinalizador de bits de uso geral do cabeçalho do arquivo local) será definido para cada entrada,

Se entryNameEncoding for definido nullcomo , os nomes de entrada serão codificados de acordo com as seguintes regras:

  • Para nomes de entrada que contêm caracteres fora do intervalo ASCII, o sinalizador de codificação de idioma é definido e UTF-8 é usado para codificar o nome da entrada.

  • Para nomes de entrada que contêm apenas caracteres ASCII, o sinalizador de codificação de idioma é definido e a página de código padrão do sistema atual é usada para codificar os nomes de entrada.

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