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
Implementa
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
sourceStream
não é buscável.
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
path
é nulo.
O chamador não tem a permissão necessária para acessar.
O path
está vazio, contém apenas espaços em branco ou contém caracteres inválidos.
O acesso ao arquivo path
é negado.
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.
O arquivo em path
contém dois pontos (:) no meio da string.
O arquivo não foi encontrado.
O caminho especificado é inválido, como estar em uma unidade não mapeada.
O arquivo já está aberto.
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
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>
NewEntrySettings
Configurações de compressão e criptografia usadas para itens Aspose.Zip.ArchiveEntry recém-adicionados.
public ArchiveEntrySettings NewEntrySettings { get; }
Valor da Propriedade
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
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
O caminho para directory
é inválido, como estar em uma unidade não mapeada.
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
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
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
path
é nulo.
O chamador não tem a permissão necessária para acessar.
O path
está vazio, contém apenas espaços em branco ou contém caracteres inválidos.
O acesso ao arquivo path
é negado.
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.
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
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
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
fileInfo
é somente leitura ou é um diretório.
O caminho especificado é inválido, como estar em uma unidade não mapeada.
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
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
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>
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
Instância da entrada zip.
Exemplos
Compor arquivo com entrada criptografada.
System.Func<Stream> 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
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 > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
Exceções
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
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
O arquivo está descartado.
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
destinationDirectory
é nulo.
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.
O chamador não tem a permissão necessária para acessar o diretório existente.
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:").
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 (:).
O diretório especificado pelo caminho é um arquivo. -ou- O nome da rede não é conhecido.
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
outputStream
não é gravável.
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
destinationFileName
é nulo.
O chamador não tem a permissão necessária para acessar.
O destinationFileName
está vazio, contém apenas espaços em branco ou contém caracteres inválidos.
O acesso ao arquivo destinationFileName
é negado.
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.
O arquivo em destinationFileName
contém dois pontos (:) no meio da string.
O arquivo não foi encontrado.
O caminho especificado é inválido, como estar em uma unidade não mapeada.
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
Este arquivo foi aberto a partir de uma fonte existente.
Este arquivo é tanto comprimido com o método XZ quanto criptografado.
destinationDirectory
é nulo.
O chamador não tem a permissão necessária para acessar o diretório.
destinationDirectory
contém caracteres inválidos, como “, >, < ou |.
O caminho especificado excede o comprimento máximo definido pelo sistema.
O arquivo está descartado.