ZipFile.CreateFromDirectory ZipFile.CreateFromDirectory ZipFile.CreateFromDirectory ZipFile.CreateFromDirectory Method

Definição

Cria um arquivo zip que contém os arquivos e diretórios da pasta especificada.Creates a zip archive that contains the files and directories from the specified directory.

Sobrecargas

CreateFromDirectory(String, String) CreateFromDirectory(String, String) CreateFromDirectory(String, String) CreateFromDirectory(String, String)

Cria um arquivo zip que contém os arquivos e diretórios da pasta especificada.Creates a zip archive that contains the files and directories from the specified directory.

CreateFromDirectory(String, String, CompressionLevel, Boolean) CreateFromDirectory(String, String, CompressionLevel, Boolean) 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.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level, and optionally includes the base directory.

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding) CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding) 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.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level and character encoding for entry names, and optionally includes the base directory.

CreateFromDirectory(String, String) CreateFromDirectory(String, String) CreateFromDirectory(String, String) CreateFromDirectory(String, String)

Cria um arquivo zip que contém os arquivos e diretórios da pasta especificada.Creates a zip archive that contains the files and directories from the specified directory.

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName);
static member CreateFromDirectory : string * string -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destinationArchiveFileName As String)

Parâmetros

sourceDirectoryName
String String String String

O caminho para o diretório a ser arquivado, especificado como um caminho relativo ou absoluto.The path to the directory to be archived, 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.

destinationArchiveFileName
String String String String

O caminho do arquivo morto a ser criado, especificado como um caminho relativo ou absoluto.The path of the archive to be created, 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

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

sourceDirectoryName ou destinationArchiveFileName é null.sourceDirectoryName or destinationArchiveFileName is null.

Em sourceDirectoryName ou destinationArchiveFileName, o caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName é inválido ou não existe (por exemplo, ele está em uma unidade não mapeada).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName já existe.destinationArchiveFileName already exists.

- ou --or- Não foi possível abrir um arquivo no diretório especificado.A file in the specified directory could not be opened.

destinationArchiveFileName especifica um diretório.destinationArchiveFileName specifies a directory.

- ou --or- O chamador não tem a permissão necessária para acessar o diretório especificado em sourceDirectoryName ou o arquivo especificado em destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryName ou destinationArchiveFileName contém um formato inválido.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

- ou --or- O arquivo zip não dá suporte à gravação.The zip archive does not support writing.

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, em seguida, extrai esse conteúdo para uma nova pasta.It compresses the contents of a folder into a zip archive, and then 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

A estrutura de diretórios do sistema de arquivos é preservada no arquivo morto.The directory structure from the file system is preserved in the archive. Se o diretório estiver vazio, um arquivo vazio será criado.If the directory is empty, an empty archive is created. Essa sobrecarga de método não inclui o diretório base no arquivo e não permite que você especifique um nível de compactação.This method overload does not include the base directory in the archive and does not allow you to specify a compression level. Se você quiser incluir o diretório base ou especificar um nível de compactação, chame CreateFromDirectory(String, String, CompressionLevel, Boolean) a sobrecarga do método.If you want to include the base directory or specify a compression level, call the CreateFromDirectory(String, String, CompressionLevel, Boolean) method overload.

Se o arquivo já existir, uma IOException exceção será lançada.If the archive already exists, an IOException exception is thrown. Se uma entrada com o nome especificado já existir no arquivo morto, uma segunda entrada será criada com um nome idêntico.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

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 lançará uma IOException exceção.If a file in the directory cannot be added to the archive, the archive is left incomplete and invalid, and the method throws an IOException exception.

CreateFromDirectory(String, String, CompressionLevel, Boolean) CreateFromDirectory(String, String, CompressionLevel, Boolean) 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.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level, and optionally includes the base directory.

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory);
static member CreateFromDirectory : string * string * System.IO.Compression.CompressionLevel * bool -> unit

Parâmetros

sourceDirectoryName
String String String String

O caminho para o diretório a ser arquivado, especificado como um caminho relativo ou absoluto.The path to the directory to be archived, 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.

destinationArchiveFileName
String String String String

O caminho do arquivo morto a ser criado, especificado como um caminho relativo ou absoluto.The path of the archive to be created, 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.

compressionLevel
CompressionLevel CompressionLevel 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.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean Boolean Boolean 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.true to include the directory name from sourceDirectoryName at the root of the archive; false to include only the contents of the directory.

Exceções

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

sourceDirectoryName ou destinationArchiveFileName é null.sourceDirectoryName or destinationArchiveFileName is null.

Em sourceDirectoryName ou destinationArchiveFileName, o caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName é inválido ou não existe (por exemplo, ele está em uma unidade não mapeada).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName já existe.destinationArchiveFileName already exists.

- ou --or- Não foi possível abrir um arquivo no diretório especificado.A file in the specified directory could not be opened.

destinationArchiveFileName especifica um diretório.destinationArchiveFileName specifies a directory.

- ou --or- O chamador não tem a permissão necessária para acessar o diretório especificado em sourceDirectoryName ou o arquivo especificado em destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryName ou destinationArchiveFileName contém um formato inválido.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

- ou --or- O arquivo zip não dá suporte à gravação.The zip archive does not support writing.

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, em seguida, extrai esse conteúdo para uma nova pasta.It compresses the contents of a folder into a zip archive, and then extracts that content to a new folder. Ao compactar o arquivo, 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.When compressing the archive, the base directory is included and the compression level is set to emphasize the speed of the operation over efficiency. 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;
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);
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

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

        ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, True)

        ZipFile.ExtractToDirectory(zipPath, extractPath)
    End Sub

End Module

Comentários

A estrutura de diretórios do sistema de arquivos é preservada no arquivo morto.The directory structure from the file system is preserved in the archive. Se o diretório estiver vazio, um arquivo vazio será criado.If the directory is empty, an empty archive is created. Use essa sobrecarga de método para especificar o nível de compactação e se deseja incluir o diretório base no arquivo morto.Use this method overload to specify the compression level and whether to include the base directory in the archive.

Se o arquivo já existir, uma IOException exceção será lançada.If the archive already exists, an IOException exception is thrown. Se uma entrada com o nome especificado já existir no arquivo morto, uma segunda entrada será criada com um nome idêntico.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

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 lançará uma IOException exceção.If a file in the directory cannot be added to the archive, the archive is left incomplete and invalid, and the method throws an IOException exception.

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding) CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding) 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.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level and character encoding for entry names, and optionally includes the base directory.

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::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);
static member CreateFromDirectory : string * string * System.IO.Compression.CompressionLevel * bool * System.Text.Encoding -> unit

Parâmetros

sourceDirectoryName
String String String String

O caminho para o diretório a ser arquivado, especificado como um caminho relativo ou absoluto.The path to the directory to be archived, 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.

destinationArchiveFileName
String String String String

O caminho do arquivo morto a ser criado, especificado como um caminho relativo ou absoluto.The path of the archive to be created, 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.

compressionLevel
CompressionLevel CompressionLevel 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.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean Boolean Boolean 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.true to include the directory name from sourceDirectoryName at the root of the archive; false to include only the contents of the directory.

entryNameEncoding
Encoding Encoding Encoding 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

sourceDirectoryName ou destinationArchiveFileName é Empty, contém somente espaços em branco ou, pelo menos, um caractere inválido.sourceDirectoryName or destinationArchiveFileName 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.

sourceDirectoryName ou destinationArchiveFileName é null.sourceDirectoryName or destinationArchiveFileName is null.

Em sourceDirectoryName ou destinationArchiveFileName, o caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName é inválido ou não existe (por exemplo, ele está em uma unidade não mapeada).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName já existe.destinationArchiveFileName already exists.

- ou --or- Não foi possível abrir um arquivo no diretório especificado.A file in the specified directory could not be opened.

destinationArchiveFileName especifica um diretório.destinationArchiveFileName specifies a directory.

- ou --or- O chamador não tem a permissão necessária para acessar o diretório especificado em sourceDirectoryName ou o arquivo especificado em destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryName ou destinationArchiveFileName contém um formato inválido.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

- ou --or- O arquivo zip não dá suporte à gravação.The zip archive does not support writing.

Comentários

A estrutura de diretórios do sistema de arquivos é preservada no arquivo morto.The directory structure from the file system is preserved in the archive. Se o diretório estiver vazio, um arquivo vazio será criado.If the directory is empty, an empty archive is created. 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.Use this method overload to specify the compression level and character encoding, and whether to include the base directory in the archive.

Se o arquivo já existir, uma IOException exceção será lançada.If the archive already exists, an IOException exception is thrown. Se uma entrada com o nome especificado já existir no arquivo morto, uma segunda entrada será criada com um nome idêntico.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

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 lançará uma IOException exceção.If a file in the directory cannot be added to the archive, the archive is left incomplete and invalid, and the method throws an IOException exception.

Se entryNameEncoding é definido com um valor diferente de null, os nomes de entrada são codificados usando a codificação especificada.If entryNameEncoding is set to a value other than null, the entry names are encoded by using the specified encoding. Se a codificação especificada for um UTF-8, o sinalizador de codificação de idioma (no sinalizador de bit de uso geral do cabeçalho do arquivo local) será definido para cada entrada,If the specified encoding is a UTF-8, the language encoding flag (in the general-purpose bit flag of the local file header) is set for each entry,

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

  • 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.For entry names that contain characters outside the ASCII range, the language encoding flag is set, and UTF-8 is used to encode the entry name.

  • 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.For entry names that contain only ASCII characters, the language encoding flag is set, and the current system default code page is used to encode the entry names.

Aplica-se a