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
Implementa
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
sourceStream
no es buscable.
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
path
es nulo.
El llamador no tiene el permiso requerido para acceder.
El path
está vacío, contiene solo espacios en blanco o contiene caracteres no válidos.
El acceso al archivo path
está denegado.
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.
El archivo en path
contiene dos puntos (:) en medio de la cadena.
El archivo no se encuentra.
La ruta especificada no es válida, como estar en una unidad no asignada.
El archivo ya está abierto.
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
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>
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
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
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
La ruta al directory
es inválida, como estar en una unidad no asignada.
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
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
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
path
es nulo.
El llamador no tiene el permiso requerido para acceder.
El path
está vacío, contiene solo espacios en blanco o contiene caracteres no válidos.
El acceso al archivo path
está denegado.
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.
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
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
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
fileInfo
es de solo lectura o es un directorio.
La ruta especificada es inválida, como estar en una unidad no asignada.
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
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
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>
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
Instancia de entrada zip.
Ejemplos
Componer archivo con entrada cifrada.
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);
}
}
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
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 > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
Excepciones
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
El archivo con la entrada eliminada.
Ejemplos
using (var archive = new TarArchive("two_files.zip"))
{
archive.DeleteEntry(0);
archive.Save("single_file.zip");
}
Excepciones
El archivo está eliminado.
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
destinationDirectory
es nulo.
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.
El llamador no tiene el permiso requerido para acceder al directorio existente.
Si el directorio no existe, la ruta contiene un carácter de dos puntos (:) que no es parte de una etiqueta de unidad (“C:").
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 (:).
El directorio especificado por la ruta es un archivo. -o- El nombre de red no es conocido.
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
outputStream
no es escribible.
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
destinationFileName
es nulo.
El llamador no tiene el permiso requerido para acceder.
El destinationFileName
está vacío, contiene solo espacios en blanco o contiene caracteres no válidos.
El acceso al archivo destinationFileName
está denegado.
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.
El archivo en destinationFileName
contiene dos puntos (:) en medio de la cadena.
El archivo no se encuentra.
La ruta especificada no es válida, como estar en una unidad no asignada.
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
Este archivo se abrió desde una fuente existente.
Este archivo está comprimido con el método XZ y cifrado.
destinationDirectory
es nulo.
El llamador no tiene el permiso requerido para acceder al directorio.
destinationDirectory
contiene caracteres no válidos como “, >, <, o |.
La ruta especificada excede la longitud máxima definida por el sistema.
El archivo está eliminado.