Class Archive

Class Archive

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

Esta clase representa un archivo de archivo zip. Úselo para componer, extraer o actualizar archivos zip.

public class Archive : IArchive, IDisposable

Herencia

objectArchive

Implementa

IArchive, IDisposable

Miembros heredados

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

Constructores

Archive(ArchiveEntrySettings)

Inicializa una nueva instancia de la clase Aspose.Zip.Archive con configuraciones opcionales para sus entradas.

public Archive(ArchiveEntrySettings newEntrySettings = null)

Parámetros

newEntrySettings ArchiveEntrySettings

Configuraciones de compresión y cifrado utilizadas para los elementos Aspose.Zip.ArchiveEntry recién añadidos. Si no se especifica, se utilizará la compresión Deflate más común sin cifrado.

Ejemplos

El siguiente ejemplo muestra cómo comprimir un solo archivo con configuraciones predeterminadas.

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 una nueva instancia de la clase Aspose.Zip.Archive y compone una lista de entradas que se pueden extraer del archivo.

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

Parámetros

sourceStream Stream

La fuente del archivo.

loadOptions ArchiveLoadOptions

Opciones para cargar el archivo existente.

newEntrySettings ArchiveEntrySettings

Configuraciones de compresión y cifrado utilizadas para los elementos Aspose.Zip.ArchiveEntry recién añadidos. Si no se especifica, se utilizará la compresión Deflate más común sin cifrado.

Ejemplos

El siguiente ejemplo extrae un archivo cifrado, luego descomprime la primera entrada a un 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);
    }
}

Observaciones

Este constructor no descomprime ninguna entrada. Consulte el método Aspose.Zip.ArchiveEntry.Open(System.String) para descomprimir.

Excepciones

ArgumentException

sourceStream no es buscable.

InvalidDataException

El encabezado de cifrado para AES contradice el método de compresión de WinZip.

Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)

Inicializa una nueva instancia de la clase Aspose.Zip.Archive y compone una lista de entradas que se pueden extraer del archivo.

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

Parámetros

path string

La ruta completamente calificada o la ruta relativa al archivo de archivo.

loadOptions ArchiveLoadOptions

Opciones para cargar el archivo existente.

newEntrySettings ArchiveEntrySettings

Configuraciones de compresión y cifrado utilizadas para los elementos Aspose.Zip.ArchiveEntry recién añadidos. Si no se especifica, se utilizará la compresión Deflate más común sin cifrado.

Ejemplos

El siguiente ejemplo extrae un archivo cifrado, luego descomprime la primera entrada a un 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);
    }
}

Observaciones

Este constructor no descomprime ninguna entrada. Consulte el método Aspose.Zip.ArchiveEntry.Open(System.String) para descomprimir.

Excepciones

ArgumentNullException

path es nulo.

SecurityException

El llamador no tiene el permiso requerido para acceder.

ArgumentException

El path está vacío, contiene solo espacios en blanco o contiene caracteres no válidos.

UnauthorizedAccessException

El acceso al archivo path está denegado.

PathTooLongException

La path, el nombre del archivo o ambos exceden la longitud máxima definida por el sistema. Por ejemplo, en plataformas basadas en Windows, las rutas deben tener menos de 248 caracteres y los nombres de archivo deben tener menos de 260 caracteres.

NotSupportedException

El archivo en path contiene dos puntos (:) en medio de la cadena.

FileNotFoundException

El archivo no se encuentra.

DirectoryNotFoundException

La ruta especificada no es válida, como estar en una unidad no asignada.

IOException

El archivo ya está abierto.

InvalidDataException

El archivo está dañado.

Archive(string, string[], ArchiveLoadOptions)

Inicializa una nueva instancia de la clase Aspose.Zip.Archive desde un archivo zip de varios volúmenes y compone una lista de entradas que se pueden extraer del archivo.

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

Parámetros

mainSegment string

Ruta al último segmento del archivo zip de varios volúmenes con el directorio central.

Normalmente, este segmento tiene la extensión *.zip y es más pequeño que los demás.

segmentsInOrder string[]

Rutas a cada segmento excepto el último del archivo zip de varios volúmenes respetando el orden.

Normalmente se nombran filename.z01, filename.z02, ..., filename.z(n-1).

loadOptions ArchiveLoadOptions

Opciones para cargar el archivo existente.

Ejemplos

Este ejemplo extrae a un directorio un archivo de tres segmentos.

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

Excepciones

EndOfStreamException

No se pueden cargar los encabezados ZIP porque los archivos proporcionados están dañados.

Propiedades

Entries

Obtiene las entradas del tipo Aspose.Zip.ArchiveEntry que constituyen el archivo.

public ReadOnlyCollection<archiveentry> Entries { get; }

Valor de la propiedad

ReadOnlyCollection<ArchiveEntry&gt;

NewEntrySettings

Configuraciones de compresión y cifrado utilizadas para los elementos Aspose.Zip.ArchiveEntry recién añadidos.

public ArchiveEntrySettings NewEntrySettings { get; }

Valor de la propiedad

ArchiveEntrySettings

Métodos

CreateEntries(DirectoryInfo, bool)

Agrega al archivo todos los archivos y directorios recursivamente en el directorio dado.

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

Parámetros

directory DirectoryInfo

Directorio a comprimir.

includeRootDirectory bool

Indica si se debe incluir el directorio raíz en sí o no.

Retorna

Archive

El archivo con las entradas compuestas.

Ejemplos

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

Excepciones

DirectoryNotFoundException

La ruta al directory es inválida, como estar en una unidad no asignada.

SecurityException

El llamador no tiene el permiso requerido para acceder al directory.

CreateEntries(string, bool)

Agrega al archivo todos los archivos y directorios recursivamente en el directorio dado.

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

Parámetros

sourceDirectory string

Directorio a comprimir.

includeRootDirectory bool

Indica si se debe incluir el directorio raíz en sí o no.

Retorna

Archive

El archivo con las entradas compuestas.

Ejemplos

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

CreateEntry(string, string, bool, ArchiveEntrySettings)

Crea una entrada única dentro del archivo.

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

Parámetros

name string

El nombre de la entrada.

path string

El nombre completamente calificado del nuevo archivo, o el nombre de archivo relativo que se va a comprimir.

openImmediately bool

Verdadero si abrir el archivo de inmediato, de lo contrario abrir el archivo al guardar el archivo.

newEntrySettings ArchiveEntrySettings

Configuraciones de compresión y cifrado utilizadas para el elemento Aspose.Zip.ArchiveEntry añadido.

Retorna

ArchiveEntry

Instancia de entrada zip.

Ejemplos

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

Observaciones

El nombre de la entrada se establece únicamente dentro del parámetro name. El nombre de archivo proporcionado en el parámetro path no afecta el nombre de la entrada.

Si el archivo se abre de inmediato con el parámetro openImmediately, se bloqueará hasta que se guarde el archivo.

Excepciones

ArgumentNullException

path es nulo.

SecurityException

El llamador no tiene el permiso requerido para acceder.

ArgumentException

El path está vacío, contiene solo espacios en blanco o contiene caracteres no válidos.

UnauthorizedAccessException

El acceso al archivo path está denegado.

PathTooLongException

La path, el nombre del archivo o ambos exceden la longitud máxima definida por el sistema. Por ejemplo, en plataformas basadas en Windows, las rutas deben tener menos de 248 caracteres y los nombres de archivo deben tener menos de 260 caracteres.

NotSupportedException

El archivo en path contiene dos puntos (:) en medio de la cadena.

CreateEntry(string, Stream, ArchiveEntrySettings)

Crea una entrada única dentro del archivo.

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

Parámetros

name string

El nombre de la entrada.

source Stream

El flujo de entrada para la entrada.

newEntrySettings ArchiveEntrySettings

Configuraciones de compresión y cifrado utilizadas para el elemento Aspose.Zip.ArchiveEntry añadido.

Retorna

ArchiveEntry

Instancia de entrada zip.

Ejemplos

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)

Crea una entrada única dentro del archivo.

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

Parámetros

name string

El nombre de la entrada.

fileInfo FileInfo

Los metadatos del archivo que se va a comprimir.

openImmediately bool

Verdadero si abrir el archivo de inmediato, de lo contrario abrir el archivo al guardar el archivo.

newEntrySettings ArchiveEntrySettings

Configuraciones de compresión y cifrado utilizadas para el elemento Aspose.Zip.ArchiveEntry añadido.

Retorna

ArchiveEntry

Instancia de entrada zip.

Ejemplos

Componer archivo con entradas cifradas con diferentes métodos de cifrado y contraseñas cada una.

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);
    }
}

Observaciones

El nombre de la entrada se establece únicamente dentro del parámetro name. El nombre de archivo proporcionado en el parámetro fileInfo no afecta el nombre de la entrada.

Si el archivo se abre de inmediato con el parámetro openImmediately, se bloqueará hasta que se guarde el archivo.

Excepciones

UnauthorizedAccessException

fileInfo es de solo lectura o es un directorio.

DirectoryNotFoundException

La ruta especificada es inválida, como estar en una unidad no asignada.

IOException

El archivo ya está abierto.

CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)

Crea una entrada única dentro del archivo.

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

Parámetros

name string

El nombre de la entrada.

source Stream

El flujo de entrada para la entrada.

newEntrySettings ArchiveEntrySettings

Configuraciones de compresión y cifrado utilizadas para el elemento Aspose.Zip.ArchiveEntry añadido.

fileInfo FileSystemInfo

Los metadatos del archivo o carpeta que se va a comprimir.

Retorna

ArchiveEntry

Instancia de entrada zip.

Ejemplos

Componer archivo con entrada cifrada.

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);
    }
}

Observaciones

El nombre de la entrada se establece únicamente dentro del parámetro name. El nombre de archivo proporcionado en el parámetro fileInfo no afecta el nombre de la entrada.

fileInfo puede referirse a System.IO.DirectoryInfo si la entrada es un directorio.

Excepciones

InvalidOperationException

Tanto source como fileInfo son nulos o source es nulo y fileInfo representa un directorio.

CreateEntry(string, Func<stream>, ArchiveEntrySettings)

Crea una entrada única dentro del archivo.

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

Parámetros

name string

El nombre de la entrada.

streamProvider Func<Stream&gt;

El método que proporciona el flujo de entrada para la entrada.

newEntrySettings ArchiveEntrySettings

Configuraciones de compresión y cifrado utilizadas para el elemento Aspose.Zip.ArchiveEntry añadido.

Retorna

ArchiveEntry

Instancia de entrada zip.

Ejemplos

Componer archivo con entrada cifrada.

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);
    }
}

Observaciones

Este método es para .NET Framework 4.0 y superior y para la versión .NET Standard 2.0.

DeleteEntry(ArchiveEntry)

Elimina la primera ocurrencia de una entrada específica de la lista de entradas.

public Archive DeleteEntry(ArchiveEntry entry)

Parámetros

entry ArchiveEntry

La entrada para eliminar de la lista de entradas.

Retorna

Archive

El archivo con la entrada eliminada.

Ejemplos

Aquí se muestra cómo puede eliminar todas las entradas excepto la última:

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

Excepciones

ObjectDisposedException

El archivo está eliminado.

DeleteEntry(int)

Elimina la entrada de la lista de entradas por índice.

public Archive DeleteEntry(int entryIndex)

Parámetros

entryIndex int

El índice basado en cero de la entrada a eliminar.

Retorna

Archive

El archivo con la entrada eliminada.

Ejemplos

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

Excepciones

ObjectDisposedException

El archivo está eliminado.

ArgumentOutOfRangeException

entryIndex es menor que 0.-o- entryIndex es igual o mayor que Entries cuenta.

Dispose()

Realiza tareas definidas por la aplicación asociadas con liberar, liberar o restablecer recursos no administrados.

public void Dispose()

Dispose(bool)

Realiza tareas definidas por la aplicación asociadas con liberar, liberar o restablecer recursos no administrados.

protected virtual void Dispose(bool disposing)

Parámetros

disposing bool

Si los recursos administrados deben ser eliminados.

ExtractToDirectory(string)

Extrae todos los archivos en el archivo al directorio proporcionado.

public void ExtractToDirectory(string destinationDirectory)

Parámetros

destinationDirectory string

La ruta al directorio donde se colocarán los archivos extraídos.

Ejemplos

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

Observaciones

Si el directorio no existe, se creará.

Excepciones

ArgumentNullException

destinationDirectory es nulo.

PathTooLongException

La ruta especificada, el nombre del archivo o ambos exceden la longitud máxima definida por el sistema. Por ejemplo, en plataformas basadas en Windows, las rutas deben tener menos de 248 caracteres y los nombres de archivo deben tener menos de 260 caracteres.

SecurityException

El llamador no tiene el permiso requerido para acceder al directorio existente.

NotSupportedException

Si el directorio no existe, la ruta contiene un carácter de dos puntos (:) que no es parte de una etiqueta de unidad (“C:").

ArgumentException

destinationDirectory es una cadena de longitud cero, contiene solo espacios en blanco o contiene uno o más caracteres no válidos. Puede consultar caracteres no válidos utilizando el método System.IO.Path.GetInvalidPathChars. -o- la ruta está precedida o contiene solo un carácter de dos puntos (:).

IOException

El directorio especificado por la ruta es un archivo. -o- El nombre de red no es conocido.

InvalidDataException

Se ha proporcionado una contraseña incorrecta. - o - El archivo está dañado.

Save(Stream, ArchiveSaveOptions)

Guarda el archivo en el flujo proporcionado.

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

Parámetros

outputStream Stream

Flujo de destino.

saveOptions ArchiveSaveOptions

Opciones para guardar el archivo.

Ejemplos

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

Observaciones

outputStream debe ser escribible.

Excepciones

ArgumentException

outputStream no es escribible.

ObjectDisposedException

El archivo está eliminado.

Save(string, ArchiveSaveOptions)

Guarda el archivo en el archivo de destino proporcionado.

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

Parámetros

destinationFileName string

La ruta del archivo que se va a crear. Si el nombre de archivo especificado apunta a un archivo existente, se sobrescribirá.

saveOptions ArchiveSaveOptions

Opciones para guardar el archivo.

Ejemplos

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

Observaciones

Es posible guardar un archivo en la misma ruta de la que se cargó. Sin embargo, esto no se recomienda porque este enfoque utiliza la copia en un archivo temporal.

Excepciones

ArgumentNullException

destinationFileName es nulo.

SecurityException

El llamador no tiene el permiso requerido para acceder.

ArgumentException

El destinationFileName está vacío, contiene solo espacios en blanco o contiene caracteres no válidos.

UnauthorizedAccessException

El acceso al archivo destinationFileName está denegado.

PathTooLongException

La destinationFileName, el nombre del archivo o ambos exceden la longitud máxima definida por el sistema. Por ejemplo, en plataformas basadas en Windows, las rutas deben tener menos de 248 caracteres y los nombres de archivo deben tener menos de 260 caracteres.

NotSupportedException

El archivo en destinationFileName contiene dos puntos (:) en medio de la cadena.

FileNotFoundException

El archivo no se encuentra.

DirectoryNotFoundException

La ruta especificada no es válida, como estar en una unidad no asignada.

IOException

El archivo ya está abierto.

SaveSplit(string, SplitArchiveSaveOptions)

Guarda el archivo de varios volúmenes en el directorio de destino proporcionado.

public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)

Parámetros

destinationDirectory string

La ruta al directorio donde se crearán los segmentos del archivo.

options SplitArchiveSaveOptions

Opciones para guardar el archivo, incluyendo el nombre del archivo.

Ejemplos

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

Observaciones

Este método compone varios (n) archivos filename.z01, filename.z02, ..., filename.z(n-1), filename.zip.

No se puede hacer que un archivo existente sea de varios volúmenes.

Excepciones

InvalidOperationException

Este archivo se abrió desde una fuente existente.

NotSupportedException

Este archivo está comprimido con el método XZ y cifrado.

ArgumentNullException

destinationDirectory es nulo.

SecurityException

El llamador no tiene el permiso requerido para acceder al directorio.

ArgumentException

destinationDirectory contiene caracteres no válidos como “, >, <, o |.

PathTooLongException

La ruta especificada excede la longitud máxima definida por el sistema.

ObjectDisposedException

El archivo está eliminado.

 Español