Class Archive

Class Archive

Namespace: Aspose.Zip
Assembly: Aspose.Zip.dll (25.1.0)

Esta classe representa um arquivo de arquivo zip. Use-a para compor, extrair ou atualizar arquivos zip.

public class Archive : IArchive, IDisposable

Herança

objectArchive

Implementa

IArchive, IDisposable

Membros Herdados

object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

Construtores

Archive(ArchiveEntrySettings)

Inicializa uma nova instância da classe Aspose.Zip.Archive com configurações opcionais para suas entradas.

public Archive(ArchiveEntrySettings newEntrySettings = null)

Parâmetros

newEntrySettings ArchiveEntrySettings

Configurações de compressão e criptografia usadas para itens Aspose.Zip.ArchiveEntry recém-adicionados. Se não especificado, a compressão Deflate mais comum sem criptografia será usada.

Exemplos

O seguinte exemplo mostra como compactar um único arquivo com configurações padrão.

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(zipFile);
    }
}

Archive(Stream, ArchiveLoadOptions, ArchiveEntrySettings)

Inicializa uma nova instância da classe Aspose.Zip.Archive e compõe a lista de entradas que podem ser extraídas do arquivo.

public Archive(Stream sourceStream, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)

Parâmetros

sourceStream Stream

A origem do arquivo.

loadOptions ArchiveLoadOptions

Opções para carregar o arquivo existente.

newEntrySettings ArchiveEntrySettings

Configurações de compressão e criptografia usadas para itens Aspose.Zip.ArchiveEntry recém-adicionados. Se não especificado, a compressão Deflate mais comum sem criptografia será usada.

Exemplos

O seguinte exemplo extrai um arquivo criptografado e, em seguida, descompacta a primeira entrada para um MemoryStream.

var fs = File.OpenRead("encrypted.zip");
var extracted = new MemoryStream();
using (Archive archive = new Archive(fs, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
    using (var decompressed = archive.Entries[0].Open())
    {
        byte[] b = new byte[8192];
        int bytesRead;
        while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
            extracted.Write(b, 0, bytesRead);
    }
}

Observações

Este construtor não descompacta nenhuma entrada. Veja o método Aspose.Zip.ArchiveEntry.Open(System.String) para descompactação.

Exceções

ArgumentException

sourceStream não é buscável.

InvalidDataException

O cabeçalho de criptografia para AES contradiz o método de compressão WinZip.

Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)

Inicializa uma nova instância da classe Aspose.Zip.Archive e compõe a lista de entradas que podem ser extraídas do arquivo.

public Archive(string path, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)

Parâmetros

path string

O caminho totalmente qualificado ou relativo para o arquivo de arquivo.

loadOptions ArchiveLoadOptions

Opções para carregar o arquivo existente.

newEntrySettings ArchiveEntrySettings

Configurações de compressão e criptografia usadas para itens Aspose.Zip.ArchiveEntry recém-adicionados. Se não especificado, a compressão Deflate mais comum sem criptografia será usada.

Exemplos

O seguinte exemplo extrai um arquivo criptografado e, em seguida, descompacta a primeira entrada para um MemoryStream.

var extracted = new MemoryStream();
using (Archive archive = new Archive("encrypted.zip", new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
    using (var decompressed = archive.Entries[0].Open())
    {
        byte[] b = new byte[8192];
        int bytesRead;
        while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
            extracted.Write(b, 0, bytesRead);
    }
}

Observações

Este construtor não descompacta nenhuma entrada. Veja o método Aspose.Zip.ArchiveEntry.Open(System.String) para descompactação.

Exceções

ArgumentNullException

path é nulo.

SecurityException

O chamador não tem a permissão necessária para acessar.

ArgumentException

O path está vazio, contém apenas espaços em branco ou contém caracteres inválidos.

UnauthorizedAccessException

O acesso ao arquivo path é negado.

PathTooLongException

O path, nome do arquivo ou ambos excedem o comprimento máximo definido pelo sistema. Por exemplo, em plataformas baseadas em Windows, os caminhos devem ter menos de 248 caracteres e os nomes de arquivos devem ter menos de 260 caracteres.

NotSupportedException

O arquivo em path contém dois pontos (:) no meio da string.

FileNotFoundException

O arquivo não foi encontrado.

DirectoryNotFoundException

O caminho especificado é inválido, como estar em uma unidade não mapeada.

IOException

O arquivo já está aberto.

InvalidDataException

O arquivo está corrompido.

Archive(string, string[], ArchiveLoadOptions)

Inicializa uma nova instância da classe Aspose.Zip.Archive a partir de um arquivo zip de múltiplos volumes e compõe a lista de entradas que podem ser extraídas do arquivo.

public Archive(string mainSegment, string[] segmentsInOrder, ArchiveLoadOptions loadOptions = null)

Parâmetros

mainSegment string

Caminho para o último segmento do arquivo de múltiplos volumes com o diretório central.

Geralmente, este segmento tem a extensão *.zip e é menor que os outros.

segmentsInOrder string[]

Caminhos para cada segmento, exceto o último do arquivo zip de múltiplos volumes respeitando a ordem.

Geralmente, eles são nomeados filename.z01, filename.z02, ..., filename.z(n-1).

loadOptions ArchiveLoadOptions

Opções para carregar o arquivo existente.

Exemplos

Este exemplo extrai para um diretório um arquivo de três segmentos.

using (Archive a = new Archive("archive.zip", new string[] { "archive.z01", "archive.z02" }))
{
    a.ExtractToDirectory("destination");
}

Exceções

EndOfStreamException

Não é possível carregar os cabeçalhos ZIP porque os arquivos fornecidos estão corrompidos.

Propriedades

Entries

Obtém as entradas do tipo Aspose.Zip.ArchiveEntry que constituem o arquivo.

public ReadOnlyCollection<archiveentry> Entries { get; }

Valor da Propriedade

ReadOnlyCollection<ArchiveEntry&gt;

NewEntrySettings

Configurações de compressão e criptografia usadas para itens Aspose.Zip.ArchiveEntry recém-adicionados.

public ArchiveEntrySettings NewEntrySettings { get; }

Valor da Propriedade

ArchiveEntrySettings

Métodos

CreateEntries(DirectoryInfo, bool)

Adiciona ao arquivo todos os arquivos e diretórios recursivamente no diretório fornecido.

public Archive CreateEntries(DirectoryInfo directory, bool includeRootDirectory = true)

Parâmetros

directory DirectoryInfo

Diretório a ser compactado.

includeRootDirectory bool

Indica se deve incluir o diretório raiz em si ou não.

Retorna

Archive

O arquivo com entradas compostas.

Exemplos

using (Archive archive = new Archive())
{
    DirectoryInfo folder = new DirectoryInfo("C:\folder");
    archive.CreateEntries(folder);
    archive.Save("folder.zip");
}

Exceções

DirectoryNotFoundException

O caminho para directory é inválido, como estar em uma unidade não mapeada.

SecurityException

O chamador não tem a permissão necessária para acessar directory.

CreateEntries(string, bool)

Adiciona ao arquivo todos os arquivos e diretórios recursivamente no diretório fornecido.

public Archive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)

Parâmetros

sourceDirectory string

Diretório a ser compactado.

includeRootDirectory bool

Indica se deve incluir o diretório raiz em si ou não.

Retorna

Archive

O arquivo com entradas compostas.

Exemplos

using (Archive archive = new Archive())
{
    archive.CreateEntries("C:\folder");
    archive.Save("folder.zip");
}

CreateEntry(string, string, bool, ArchiveEntrySettings)

Cria uma única entrada dentro do arquivo.

public ArchiveEntry CreateEntry(string name, string path, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)

Parâmetros

name string

O nome da entrada.

path string

O nome totalmente qualificado do novo arquivo ou o nome do arquivo relativo a ser compactado.

openImmediately bool

Verdadeiro se abrir o arquivo imediatamente, caso contrário, abrir o arquivo ao salvar o arquivo.

newEntrySettings ArchiveEntrySettings

Configurações de compressão e criptografia usadas para o item Aspose.Zip.ArchiveEntry adicionado.

Retorna

ArchiveEntry

Instância da entrada zip.

Exemplos

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(zipFile);
    }
}

Observações

O nome da entrada é definido exclusivamente no parâmetro name. O nome do arquivo fornecido no parâmetro path não afeta o nome da entrada.

Se o arquivo for aberto imediatamente com o parâmetro openImmediately, ele ficará bloqueado até que o arquivo seja salvo.

Exceções

ArgumentNullException

path é nulo.

SecurityException

O chamador não tem a permissão necessária para acessar.

ArgumentException

O path está vazio, contém apenas espaços em branco ou contém caracteres inválidos.

UnauthorizedAccessException

O acesso ao arquivo path é negado.

PathTooLongException

O path, nome do arquivo ou ambos excedem o comprimento máximo definido pelo sistema. Por exemplo, em plataformas baseadas em Windows, os caminhos devem ter menos de 248 caracteres e os nomes de arquivos devem ter menos de 260 caracteres.

NotSupportedException

O arquivo em path contém dois pontos (:) no meio da string.

CreateEntry(string, Stream, ArchiveEntrySettings)

Cria uma única entrada dentro do arquivo.

public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings = null)

Parâmetros

name string

O nome da entrada.

source Stream

O fluxo de entrada para a entrada.

newEntrySettings ArchiveEntrySettings

Configurações de compressão e criptografia usadas para o item Aspose.Zip.ArchiveEntry adicionado.

Retorna

ArchiveEntry

Instância da entrada zip.

Exemplos

using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
{
    archive.CreateEntry("data.bin", new MemoryStream(new byte[] {0x00, 0xFF} ));
    archive.Save("archive.zip");
}

CreateEntry(string, FileInfo, bool, ArchiveEntrySettings)

Cria uma única entrada dentro do arquivo.

public ArchiveEntry CreateEntry(string name, FileInfo fileInfo, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)

Parâmetros

name string

O nome da entrada.

fileInfo FileInfo

Os metadados do arquivo a ser compactado.

openImmediately bool

Verdadeiro se abrir o arquivo imediatamente, caso contrário, abrir o arquivo ao salvar o arquivo.

newEntrySettings ArchiveEntrySettings

Configurações de compressão e criptografia usadas para o item Aspose.Zip.ArchiveEntry adicionado.

Retorna

ArchiveEntry

Instância da entrada zip.

Exemplos

Compor arquivo com entradas criptografadas com diferentes métodos de criptografia e senhas cada uma.

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    FileInfo fi1 = new FileInfo("data1.bin");
    FileInfo fi2 = new FileInfo("data2.bin");
    FileInfo fi3 = new FileInfo("data3.bin");
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry1.bin", fi1, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")));
        archive.CreateEntry("entry2.bin", fi2, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new AesEcryptionSettings("pass2", EncryptionMethod.AES128)));
        archive.CreateEntry("entry3.bin", fi3, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new AesEcryptionSettings("pass3", EncryptionMethod.AES256)));
        archive.Save(zipFile);
    }
}

Observações

O nome da entrada é definido exclusivamente no parâmetro name. O nome do arquivo fornecido no parâmetro fileInfo não afeta o nome da entrada.

Se o arquivo for aberto imediatamente com o parâmetro openImmediately, ele ficará bloqueado até que o arquivo seja salvo.

Exceções

UnauthorizedAccessException

fileInfo é somente leitura ou é um diretório.

DirectoryNotFoundException

O caminho especificado é inválido, como estar em uma unidade não mapeada.

IOException

O arquivo já está aberto.

CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)

Cria uma única entrada dentro do arquivo.

public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings, FileSystemInfo fileInfo)

Parâmetros

name string

O nome da entrada.

source Stream

O fluxo de entrada para a entrada.

newEntrySettings ArchiveEntrySettings

Configurações de compressão e criptografia usadas para o item Aspose.Zip.ArchiveEntry adicionado.

fileInfo FileSystemInfo

Os metadados do arquivo ou pasta a ser compactado.

Retorna

ArchiveEntry

Instância da entrada zip.

Exemplos

Compor arquivo com entrada criptografada.

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry1.bin", new MemoryStream(new byte[] {0x00, 0xFF} ), new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")), new FileInfo("data1.bin")); 
        archive.Save(zipFile);
    }
}

Observações

O nome da entrada é definido exclusivamente no parâmetro name. O nome do arquivo fornecido no parâmetro fileInfo não afeta o nome da entrada.

fileInfo pode se referir a System.IO.DirectoryInfo se a entrada for um diretório.

Exceções

InvalidOperationException

Ambos source e fileInfo são nulos ou source é nulo e fileInfo representa um diretório.

CreateEntry(string, Func<stream>, ArchiveEntrySettings)

Cria uma única entrada dentro do arquivo.

public ArchiveEntry CreateEntry(string name, Func<stream> streamProvider, ArchiveEntrySettings newEntrySettings = null)

Parâmetros

name string

O nome da entrada.

streamProvider Func<Stream&gt;

O método que fornece o fluxo de entrada para a entrada.

newEntrySettings ArchiveEntrySettings

Configurações de compressão e criptografia usadas para o item Aspose.Zip.ArchiveEntry adicionado.

Retorna

ArchiveEntry

Instância da entrada zip.

Exemplos

Compor arquivo com entrada criptografada.

System.Func&lt;Stream&gt; provider = delegate(){ return new MemoryStream(new byte[]{0xFF, 0x00}); };
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry1.bin", provider, new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")))); 
        archive.Save(zipFile);
    }
}

Observações

Este método é para .NET Framework 4.0 e superior e para versão .NET Standard 2.0.

DeleteEntry(ArchiveEntry)

Remove a primeira ocorrência de uma entrada específica da lista de entradas.

public Archive DeleteEntry(ArchiveEntry entry)

Parâmetros

entry ArchiveEntry

A entrada a ser removida da lista de entradas.

Retorna

Archive

O arquivo com a entrada excluída.

Exemplos

Aqui está como você pode remover todas as entradas, exceto a última:

using (var archive = new Archive("archive.zip"))
{
    while (archive.Entries.Count &gt; 1)
        archive.DeleteEntry(archive.Entries[0]);
    archive.Save("last_entry.zip");
}

Exceções

ObjectDisposedException

O arquivo está descartado.

DeleteEntry(int)

Remove a entrada da lista de entradas pelo índice.

public Archive DeleteEntry(int entryIndex)

Parâmetros

entryIndex int

O índice baseado em zero da entrada a ser removida.

Retorna

Archive

O arquivo com a entrada excluída.

Exemplos

using (var archive = new TarArchive("two_files.zip"))
{
    archive.DeleteEntry(0);
    archive.Save("single_file.zip");
}

Exceções

ObjectDisposedException

O arquivo está descartado.

ArgumentOutOfRangeException

entryIndex é menor que 0.-ou- entryIndex é igual ou maior que a contagem de Entries.

Dispose()

Executa tarefas definidas pelo aplicativo associadas à liberação, liberação ou redefinição de recursos não gerenciados.

public void Dispose()

Dispose(bool)

Executa tarefas definidas pelo aplicativo associadas à liberação, liberação ou redefinição de recursos não gerenciados.

protected virtual void Dispose(bool disposing)

Parâmetros

disposing bool

Se os recursos gerenciados devem ser descartados.

ExtractToDirectory(string)

Extrai todos os arquivos do arquivo para o diretório fornecido.

public void ExtractToDirectory(string destinationDirectory)

Parâmetros

destinationDirectory string

O caminho para o diretório onde os arquivos extraídos devem ser colocados.

Exemplos

using (var archive = new Archive("archive.zip")) 
{ 
   archive.ExtractToDirectory("C:\extracted");
}

Observações

Se o diretório não existir, ele será criado.

Exceções

ArgumentNullException

destinationDirectory é nulo.

PathTooLongException

O caminho especificado, nome do arquivo ou ambos excedem o comprimento máximo definido pelo sistema. Por exemplo, em plataformas baseadas em Windows, os caminhos devem ter menos de 248 caracteres e os nomes de arquivos devem ter menos de 260 caracteres.

SecurityException

O chamador não tem a permissão necessária para acessar o diretório existente.

NotSupportedException

Se o diretório não existir, o caminho contém um caractere de dois pontos (:) que não faz parte de um rótulo de unidade (“C:").

ArgumentException

destinationDirectory é uma string de comprimento zero, contém apenas espaços em branco ou contém um ou mais caracteres inválidos. Você pode consultar caracteres inválidos usando o método System.IO.Path.GetInvalidPathChars. -ou- o caminho é prefixado ou contém apenas um caractere de dois pontos (:).

IOException

O diretório especificado pelo caminho é um arquivo. -ou- O nome da rede não é conhecido.

InvalidDataException

Uma senha errada foi fornecida. - ou - O arquivo está corrompido.

Save(Stream, ArchiveSaveOptions)

Salva o arquivo no fluxo fornecido.

public void Save(Stream outputStream, ArchiveSaveOptions saveOptions = null)

Parâmetros

outputStream Stream

Fluxo de destino.

saveOptions ArchiveSaveOptions

Opções para salvar o arquivo.

Exemplos

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry.bin", "data.bin");
        archive.Save(zipFile);
    }
}

Observações

outputStream deve ser gravável.

Exceções

ArgumentException

outputStream não é gravável.

ObjectDisposedException

O arquivo está descartado.

Save(string, ArchiveSaveOptions)

Salva o arquivo no arquivo de destino fornecido.

public void Save(string destinationFileName, ArchiveSaveOptions saveOptions = null)

Parâmetros

destinationFileName string

O caminho do arquivo a ser criado. Se o nome do arquivo especificado aponta para um arquivo existente, ele será sobrescrito.

saveOptions ArchiveSaveOptions

Opções para salvar o arquivo.

Exemplos

using (var archive = new Archive())
{
    archive.CreateEntry("entry.bin", "data.bin");
    archive.Save("archive.zip",  new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}

Observações

É possível salvar um arquivo no mesmo caminho de onde foi carregado. No entanto, isso não é recomendado porque essa abordagem usa cópias para um arquivo temporário.

Exceções

ArgumentNullException

destinationFileName é nulo.

SecurityException

O chamador não tem a permissão necessária para acessar.

ArgumentException

O destinationFileName está vazio, contém apenas espaços em branco ou contém caracteres inválidos.

UnauthorizedAccessException

O acesso ao arquivo destinationFileName é negado.

PathTooLongException

O destinationFileName, nome do arquivo ou ambos excedem o comprimento máximo definido pelo sistema. Por exemplo, em plataformas baseadas em Windows, os caminhos devem ter menos de 248 caracteres e os nomes de arquivos devem ter menos de 260 caracteres.

NotSupportedException

O arquivo em destinationFileName contém dois pontos (:) no meio da string.

FileNotFoundException

O arquivo não foi encontrado.

DirectoryNotFoundException

O caminho especificado é inválido, como estar em uma unidade não mapeada.

IOException

O arquivo já está aberto.

SaveSplit(string, SplitArchiveSaveOptions)

Salva o arquivo de múltiplos volumes no diretório de destino fornecido.

public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)

Parâmetros

destinationDirectory string

O caminho para o diretório onde os segmentos do arquivo devem ser criados.

options SplitArchiveSaveOptions

Opções para salvar o arquivo, incluindo o nome do arquivo.

Exemplos

using (Archive archive = new Archive())
{
    archive.CreateEntry("entry.bin", "data.bin");
    archive.SaveSplit(@"C:\Folder",  new SplitArchiveSaveOptions("volume", 65536));
}

Observações

Este método compõe vários (n) arquivos filename.z01, filename.z02, ..., filename.z(n-1), filename.zip.

Não é possível transformar um arquivo existente em um arquivo de múltiplos volumes.

Exceções

InvalidOperationException

Este arquivo foi aberto a partir de uma fonte existente.

NotSupportedException

Este arquivo é tanto comprimido com o método XZ quanto criptografado.

ArgumentNullException

destinationDirectory é nulo.

SecurityException

O chamador não tem a permissão necessária para acessar o diretório.

ArgumentException

destinationDirectory contém caracteres inválidos, como “, >, < ou |.

PathTooLongException

O caminho especificado excede o comprimento máximo definido pelo sistema.

ObjectDisposedException

O arquivo está descartado.

 Português