Ler em inglês

Partilhar via


ZipFile.Open Método

Definição

Abre um arquivo zip no caminho e modo especificados.

Sobrecargas

Open(String, ZipArchiveMode, Encoding)

Abre um arquivo zip no caminho especificado, no modo especificado e usando a codificação de caractere especificado para nomes de entrada.

Open(String, ZipArchiveMode)

Abre um arquivo zip no caminho e modo especificados.

Open(String, ZipArchiveMode, Encoding)

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

Abre um arquivo zip no caminho especificado, no modo especificado e usando a codificação de caractere especificado para nomes de entrada.

C#
public static System.IO.Compression.ZipArchive Open (string archiveFileName, System.IO.Compression.ZipArchiveMode mode, System.Text.Encoding entryNameEncoding);
C#
public static System.IO.Compression.ZipArchive Open (string archiveFileName, System.IO.Compression.ZipArchiveMode mode, System.Text.Encoding? entryNameEncoding);

Parâmetros

archiveFileName
String

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

mode
ZipArchiveMode

Um dos valores de enumeração que especifica as ações permitidas nas entradas do arquivo aberto.

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.

Retornos

O arquivo zip aberto.

Exceções

archiveFileName é 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.

archiveFileName é null.

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

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

archiveFileName não pôde ser aberto.

- ou -

mode é definido como Create, mas o arquivo especificado em archiveFileName já existe.

- ou -

Ocorreu um erro de E/S não especificado ao abrir o arquivo.

archiveFileName especifica um diretório.

- ou -

O chamador não tem a permissão necessária para acessar o arquivo especificado em archiveFileName.

mode especifica um valor inválido.

mode é definido como Read, mas o arquivo especificado em archiveFileName não foi encontrado.

archiveFileName contém um formato inválido.

archiveFileName não pôde ser interpretado como um arquivo zip.

- ou -

mode é Update, mas uma entrada está ausente ou corrompida e não pode ser lida.

- ou -

mode é Update, mas uma entrada é muito grande para caber na memória.

Comentários

Quando você define o mode parâmetro Readcomo , o arquivo morto é aberto com FileMode.Open como o valor do modo de arquivo. Se o arquivo morto não existir, uma FileNotFoundException exceção será gerada. Definir o mode parâmetro como Read é equivalente a chamar o OpenRead método .

Quando você define o mode parâmetro Createcomo , o arquivo morto é aberto com FileMode.CreateNew como o valor do modo de arquivo. Se o arquivo morto já existir, um IOException será gerado.

Quando você define o mode parâmetro Updatecomo , o arquivo morto é aberto com FileMode.OpenOrCreate como o valor do modo de arquivo. Se o arquivo existir, ele será aberto. As entradas existentes podem ser modificadas e novas entradas podem ser criadas. Se o arquivo morto não existir, um novo arquivo será criado; no entanto, criar um arquivo zip no Update modo não é tão eficiente quanto criá-lo no Create modo .

Quando você abre um arquivo zip para leitura e entryNameEncoding é definido nullcomo , os nomes de entrada são decodificados de acordo com as seguintes regras:

  • Quando o sinalizador de codificação de idioma (no sinalizador de bits de uso geral do cabeçalho do arquivo local) não é definido, a página de código padrão do sistema atual é usada para decodificar o nome da entrada.

  • Quando o sinalizador de codificação de idioma é definido, UTF-8 é usado para decodificar o nome da entrada.

Quando você abre um arquivo zip para leitura e entryNameEncoding é definido como um valor diferente nullde , os nomes de entrada são decodificados de acordo com as seguintes regras:

  • Quando o sinalizador de codificação de idioma não está definido, o especificado entryNameEncoding é usado para decodificar o nome da entrada.

  • Quando o sinalizador de codificação de idioma é definido, UTF-8 é usado para decodificar o nome da entrada.

Quando você grava em arquivos de arquivo morto e entryNameEncoding é definido nullcomo , os nomes de entrada sã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 os nomes de entrada são codificados usando UTF-8.

  • Para nomes de entrada que contêm apenas caracteres ASCII, o sinalizador de codificação de idioma não está definido e os nomes de entrada são codificados usando a página de código padrão do sistema atual.

Quando você grava em arquivos de arquivo morto e entryNameEncoding é definido como um valor diferente de null, o especificado entryNameEncoding é usado para codificar os nomes de entrada em bytes. O sinalizador de codificação de idioma (no sinalizador de bits de uso geral do cabeçalho do arquivo local) é definido somente quando a codificação especificada é uma codificação UTF-8.

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

Open(String, ZipArchiveMode)

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

Abre um arquivo zip no caminho e modo especificados.

C#
public static System.IO.Compression.ZipArchive Open (string archiveFileName, System.IO.Compression.ZipArchiveMode mode);

Parâmetros

archiveFileName
String

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

mode
ZipArchiveMode

Um dos valores de enumeração que especifica as ações permitidas nas entradas do arquivo aberto.

Retornos

O arquivo zip aberto.

Exceções

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

archiveFileName é null.

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

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

archiveFileName não pôde ser aberto.

- ou -

mode é definido como Create, mas o arquivo especificado em archiveFileName já existe.

- ou -

Ocorreu um erro de E/S não especificado ao abrir o arquivo.

archiveFileName especifica um diretório.

- ou -

O chamador não tem a permissão necessária para acessar o arquivo especificado em archiveFileName.

mode especifica um valor inválido.

mode é definido como Read, mas o arquivo especificado em archiveFileName não foi encontrado.

archiveFileName contém um formato inválido.

archiveFileName não pôde ser interpretado como um arquivo zip.

- ou -

mode é Update, mas uma entrada está ausente ou corrompida e não pode ser lida.

- ou -

mode é Update, mas uma entrada é muito grande para caber na memória.

Exemplos

O exemplo a seguir mostra como abrir um arquivo zip no modo de atualização e adicionar uma entrada ao arquivo morto.

C#
using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string zipPath = @"c:\users\exampleuser\start.zip";
            string extractPath = @"c:\users\exampleuser\extract";
            string newFile = @"c:\users\exampleuser\NewFile.txt";

            using (ZipArchive archive = ZipFile.Open(zipPath, ZipArchiveMode.Update))
            {
                archive.CreateEntryFromFile(newFile, "NewEntry.txt");
                archive.ExtractToDirectory(extractPath);
            }
        }
    }
}

Comentários

Quando você define o mode parâmetro Readcomo , o arquivo morto é aberto com Open na FileMode enumeração como o valor do modo de arquivo. Se o arquivo morto não existir, uma FileNotFoundException exceção será gerada. Definir o mode parâmetro como Read é equivalente a chamar o OpenRead método .

Quando você define o mode parâmetro Createcomo , o arquivo morto é aberto com FileMode.CreateNew como o valor do modo de arquivo. Se o arquivo morto já existir, um IOException será gerado.

Quando você define o mode parâmetro Updatecomo , o arquivo morto é aberto com FileMode.OpenOrCreate como o valor do modo de arquivo. Se o arquivo existir, ele será aberto. As entradas existentes podem ser modificadas e novas entradas podem ser criadas. Se o arquivo morto não existir, um novo arquivo será criado; no entanto, criar um arquivo zip no Update modo não é tão eficiente quanto criá-lo no Create modo .

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