Class Archive

Class Archive

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

Questa classe rappresenta un file di archivio zip. Usala per comporre, estrarre o aggiornare archivi zip.

public class Archive : IArchive, IDisposable

Ereditarietà

objectArchive

Implementa

IArchive, IDisposable

Membri Ereditati

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

Costruttori

Archive(ArchiveEntrySettings)

Inizializza una nuova istanza della classe Aspose.Zip.Archive con impostazioni opzionali per le sue voci.

public Archive(ArchiveEntrySettings newEntrySettings = null)

Parametri

newEntrySettings ArchiveEntrySettings

Impostazioni di compressione e crittografia utilizzate per gli elementi Aspose.Zip.ArchiveEntry appena aggiunti.
Se non specificato, verrà utilizzata la compressione Deflate più comune senza crittografia.

Esempi

Il seguente esempio mostra come comprimere un singolo file con impostazioni predefinite.

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)

Inizializza una nuova istanza della classe Aspose.Zip.Archive e compone un elenco di voci che possono essere estratte dall’archivio.

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

Parametri

sourceStream Stream

La sorgente dell’archivio.

loadOptions ArchiveLoadOptions

Opzioni per caricare l’archivio esistente.

newEntrySettings ArchiveEntrySettings

Impostazioni di compressione e crittografia utilizzate per gli elementi Aspose.Zip.ArchiveEntry appena aggiunti.
Se non specificato, verrà utilizzata la compressione Deflate più comune senza crittografia.

Esempi

Il seguente esempio estrae un archivio crittografato, quindi decomprime la prima voce in 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);
    }
}

Osservazioni

Questo costruttore non decomprime alcuna voce. Vedi il metodo Aspose.Zip.ArchiveEntry.Open(System.String) per decomprimere.

Eccezioni

ArgumentException

sourceStream non è cercabile.

InvalidDataException

L’intestazione di crittografia per AES contraddice il metodo di compressione WinZip.

Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)

Inizializza una nuova istanza della classe Aspose.Zip.Archive e compone un elenco di voci che possono essere estratte dall’archivio.

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

Parametri

path string

Il percorso completamente qualificato o relativo al file di archivio.

loadOptions ArchiveLoadOptions

Opzioni per caricare l’archivio esistente.

newEntrySettings ArchiveEntrySettings

Impostazioni di compressione e crittografia utilizzate per gli elementi Aspose.Zip.ArchiveEntry appena aggiunti.
Se non specificato, verrà utilizzata la compressione Deflate più comune senza crittografia.

Esempi

Il seguente esempio estrae un archivio crittografato, quindi decomprime la prima voce in 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);
    }
}

Osservazioni

Questo costruttore non decomprime alcuna voce. Vedi il metodo Aspose.Zip.ArchiveEntry.Open(System.String) per decomprimere.

Eccezioni

ArgumentNullException

path è null.

SecurityException

Il chiamante non ha il permesso richiesto per accedere.

ArgumentException

Il path è vuoto, contiene solo spazi bianchi o contiene caratteri non validi.

UnauthorizedAccessException

Accesso al file path negato.

PathTooLongException

Il path, il nome del file o entrambi superano la lunghezza massima definita dal sistema. Ad esempio, su piattaforme basate su Windows, i percorsi devono essere inferiori a 248 caratteri e i nomi dei file devono essere inferiori a 260 caratteri.

NotSupportedException

Il file in path contiene un due punti (:) nel mezzo della stringa.

FileNotFoundException

Il file non è stato trovato.

DirectoryNotFoundException

Il percorso specificato non è valido, ad esempio se si trova su un’unità non mappata.

IOException

Il file è già aperto.

InvalidDataException

Il file è danneggiato.

Archive(string, string[], ArchiveLoadOptions)

Inizializza una nuova istanza della classe Aspose.Zip.Archive da un archivio zip multi-volume e compone un elenco di voci che possono essere estratte dall’archivio.

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

Parametri

mainSegment string

Percorso all’ultimo segmento dell’archivio multi-volume con la directory centrale.

Di solito, questo segmento ha estensione *.zip ed è più piccolo degli altri.

segmentsInOrder string[]

Percorsi a ciascun segmento tranne l’ultimo dell’archivio zip multi-volume rispettando l’ordine.

Di solito sono denominati filename.z01, filename.z02, ..., filename.z(n-1).

loadOptions ArchiveLoadOptions

Opzioni per caricare l’archivio esistente.

Esempi

Questo esempio estrae in una directory un archivio di tre segmenti.

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

Eccezioni

EndOfStreamException

Impossibile caricare le intestazioni ZIP perché i file forniti sono danneggiati.

Proprietà

Entries

Ottiene le voci di tipo Aspose.Zip.ArchiveEntry che costituiscono l’archivio.

public ReadOnlyCollection<archiveentry> Entries { get; }

Valore della Proprietà

ReadOnlyCollection<ArchiveEntry&gt;

NewEntrySettings

Impostazioni di compressione e crittografia utilizzate per gli elementi Aspose.Zip.ArchiveEntry appena aggiunti.

public ArchiveEntrySettings NewEntrySettings { get; }

Valore della Proprietà

ArchiveEntrySettings

Metodi

CreateEntries(DirectoryInfo, bool)

Aggiunge all’archivio tutti i file e le directory ricorsivamente nella directory fornita.

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

Parametri

directory DirectoryInfo

Directory da comprimere.

includeRootDirectory bool

Indica se includere la directory principale stessa o meno.

Restituisce

Archive

L’archivio con le voci composte.

Esempi

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

Eccezioni

DirectoryNotFoundException

Il percorso per directory non è valido, ad esempio se si trova su un’unità non mappata.

SecurityException

Il chiamante non ha il permesso richiesto per accedere a directory.

CreateEntries(string, bool)

Aggiunge all’archivio tutti i file e le directory ricorsivamente nella directory fornita.

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

Parametri

sourceDirectory string

Directory da comprimere.

includeRootDirectory bool

Indica se includere la directory principale stessa o meno.

Restituisce

Archive

L’archivio con le voci composte.

Esempi

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

CreateEntry(string, string, bool, ArchiveEntrySettings)

Crea una singola voce all’interno dell’archivio.

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

Parametri

name string

Il nome della voce.

path string

Il nome completamente qualificato del nuovo file, o il nome del file relativo da comprimere.

openImmediately bool

True se aprire il file immediatamente, altrimenti aprire il file al salvataggio dell’archivio.

newEntrySettings ArchiveEntrySettings

Impostazioni di compressione e crittografia utilizzate per l’elemento Aspose.Zip.ArchiveEntry aggiunto.

Restituisce

ArchiveEntry

Istanza di voce zip.

Esempi

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

Osservazioni

Il nome della voce è impostato esclusivamente all'interno del parametro name. Il nome del file fornito nel parametro path non influisce sul nome della voce.

Se il file è aperto immediatamente con il parametro openImmediately, diventa bloccato fino al salvataggio dell'archivio.

Eccezioni

ArgumentNullException

path è null.

SecurityException

Il chiamante non ha il permesso richiesto per accedere.

ArgumentException

Il path è vuoto, contiene solo spazi bianchi o contiene caratteri non validi.

UnauthorizedAccessException

Accesso al file path negato.

PathTooLongException

Il path, il nome del file o entrambi superano la lunghezza massima definita dal sistema. Ad esempio, su piattaforme basate su Windows, i percorsi devono essere inferiori a 248 caratteri e i nomi dei file devono essere inferiori a 260 caratteri.

NotSupportedException

Il file in path contiene un due punti (:) nel mezzo della stringa.

CreateEntry(string, Stream, ArchiveEntrySettings)

Crea una singola voce all’interno dell’archivio.

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

Parametri

name string

Il nome della voce.

source Stream

Lo stream di input per la voce.

newEntrySettings ArchiveEntrySettings

Impostazioni di compressione e crittografia utilizzate per l’elemento Aspose.Zip.ArchiveEntry aggiunto.

Restituisce

ArchiveEntry

Istanza di voce zip.

Esempi

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 singola voce all’interno dell’archivio.

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

Parametri

name string

Il nome della voce.

fileInfo FileInfo

I metadati del file da comprimere.

openImmediately bool

True se aprire il file immediatamente, altrimenti aprire il file al salvataggio dell’archivio.

newEntrySettings ArchiveEntrySettings

Impostazioni di compressione e crittografia utilizzate per l’elemento Aspose.Zip.ArchiveEntry aggiunto.

Restituisce

ArchiveEntry

Istanza di voce zip.

Esempi

Componi l'archivio con voci crittografate con diversi metodi di crittografia e password ciascuna.

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

Osservazioni

Il nome della voce è impostato esclusivamente all'interno del parametro name. Il nome del file fornito nel parametro fileInfo non influisce sul nome della voce.

Se il file è aperto immediatamente con il parametro openImmediately, diventa bloccato fino al salvataggio dell'archivio.

Eccezioni

UnauthorizedAccessException

fileInfo è di sola lettura o è una directory.

DirectoryNotFoundException

Il percorso specificato non è valido, ad esempio se si trova su un’unità non mappata.

IOException

Il file è già aperto.

CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)

Crea una singola voce all’interno dell’archivio.

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

Parametri

name string

Il nome della voce.

source Stream

Lo stream di input per la voce.

newEntrySettings ArchiveEntrySettings

Impostazioni di compressione e crittografia utilizzate per l’elemento Aspose.Zip.ArchiveEntry aggiunto.

fileInfo FileSystemInfo

I metadati del file o della cartella da comprimere.

Restituisce

ArchiveEntry

Istanza di voce zip.

Esempi

Componi l'archivio con una voce crittografata.

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

Osservazioni

Il nome della voce è impostato esclusivamente all'interno del parametro name. Il nome del file fornito nel parametro fileInfo non influisce sul nome della voce.

fileInfo può riferirsi a System.IO.DirectoryInfo se la voce è una directory.

Eccezioni

InvalidOperationException

Entrambi source e fileInfo sono null oppure source è null e fileInfo rappresenta una directory.

CreateEntry(string, Func<stream>, ArchiveEntrySettings)

Crea una singola voce all’interno dell’archivio.

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

Parametri

name string

Il nome della voce.

streamProvider Func<Stream&gt;

Il metodo che fornisce lo stream di input per la voce.

newEntrySettings ArchiveEntrySettings

Impostazioni di compressione e crittografia utilizzate per l’elemento Aspose.Zip.ArchiveEntry aggiunto.

Restituisce

ArchiveEntry

Istanza di voce zip.

Esempi

Componi l'archivio con una voce crittografata.

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

Osservazioni

Questo metodo è per .NET Framework 4.0 e versioni superiori e per la versione .NET Standard 2.0.

DeleteEntry(ArchiveEntry)

Rimuove la prima occorrenza di una voce specifica dall’elenco delle voci.

public Archive DeleteEntry(ArchiveEntry entry)

Parametri

entry ArchiveEntry

La voce da rimuovere dall’elenco delle voci.

Restituisce

Archive

L’archivio con la voce eliminata.

Esempi

Ecco come puoi rimuovere tutte le voci tranne l'ultima:

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

Eccezioni

ObjectDisposedException

L’archivio è stato eliminato.

DeleteEntry(int)

Rimuove la voce dall’elenco delle voci per indice.

public Archive DeleteEntry(int entryIndex)

Parametri

entryIndex int

L’indice a base zero della voce da rimuovere.

Restituisce

Archive

L’archivio con la voce eliminata.

Esempi

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

Eccezioni

ObjectDisposedException

L’archivio è stato eliminato.

ArgumentOutOfRangeException

entryIndex è minore di 0.-o- entryIndex è uguale o maggiore di Entries count.

Dispose()

Esegue operazioni definite dall’applicazione associate alla liberazione, al rilascio o al ripristino delle risorse non gestite.

public void Dispose()

Dispose(bool)

Esegue operazioni definite dall’applicazione associate alla liberazione, al rilascio o al ripristino delle risorse non gestite.

protected virtual void Dispose(bool disposing)

Parametri

disposing bool

Indica se le risorse gestite devono essere liberate.

ExtractToDirectory(string)

Estrae tutti i file nell’archivio nella directory fornita.

public void ExtractToDirectory(string destinationDirectory)

Parametri

destinationDirectory string

Il percorso della directory in cui posizionare i file estratti.

Esempi

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

Osservazioni

Se la directory non esiste, verrà creata.

Eccezioni

ArgumentNullException

destinationDirectory è null.

PathTooLongException

Il percorso specificato, il nome del file o entrambi superano la lunghezza massima definita dal sistema. Ad esempio, su piattaforme basate su Windows, i percorsi devono essere inferiori a 248 caratteri e i nomi dei file devono essere inferiori a 260 caratteri.

SecurityException

Il chiamante non ha il permesso richiesto per accedere alla directory esistente.

NotSupportedException

Se la directory non esiste, il percorso contiene un carattere due punti (:) che non è parte di un’etichetta di unità (“C:").

ArgumentException

destinationDirectory è una stringa di lunghezza zero, contiene solo spazi bianchi o contiene uno o più caratteri non validi. Puoi interrogare i caratteri non validi utilizzando il metodo System.IO.Path.GetInvalidPathChars.
-o- il percorso è preceduto da, o contiene, solo un carattere due punti (:).

IOException

La directory specificata dal percorso è un file. -o- Il nome di rete non è noto.

InvalidDataException

È stata fornita una password errata. - o - L’archivio è danneggiato.

Save(Stream, ArchiveSaveOptions)

Salva l’archivio nello stream fornito.

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

Parametri

outputStream Stream

Stream di destinazione.

saveOptions ArchiveSaveOptions

Opzioni per il salvataggio dell’archivio.

Esempi

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

Osservazioni

outputStream deve essere scrivibile.

Eccezioni

ArgumentException

outputStream non è scrivibile.

ObjectDisposedException

L’archivio è stato eliminato.

Save(string, ArchiveSaveOptions)

Salva l’archivio nel file di destinazione fornito.

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

Parametri

destinationFileName string

Il percorso dell’archivio da creare. Se il nome del file specificato punta a un file esistente, verrà sovrascritto.

saveOptions ArchiveSaveOptions

Opzioni per il salvataggio dell’archivio.

Esempi

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

Osservazioni

È possibile salvare un archivio nello stesso percorso da cui è stato caricato. Tuttavia, questo non è consigliato perché questo approccio utilizza la copia in un file temporaneo.

Eccezioni

ArgumentNullException

destinationFileName è null.

SecurityException

Il chiamante non ha il permesso richiesto per accedere.

ArgumentException

Il destinationFileName è vuoto, contiene solo spazi bianchi o contiene caratteri non validi.

UnauthorizedAccessException

Accesso al file destinationFileName negato.

PathTooLongException

Il destinationFileName, il nome del file o entrambi superano la lunghezza massima definita dal sistema.
Ad esempio, su piattaforme basate su Windows, i percorsi devono essere inferiori a 248 caratteri e i nomi dei file devono essere inferiori a 260 caratteri.

NotSupportedException

Il file in destinationFileName contiene un due punti (:) nel mezzo della stringa.

FileNotFoundException

Il file non è stato trovato.

DirectoryNotFoundException

Il percorso specificato non è valido, ad esempio se si trova su un’unità non mappata.

IOException

Il file è già aperto.

SaveSplit(string, SplitArchiveSaveOptions)

Salva l’archivio multi-volume nella directory di destinazione fornita.

public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)

Parametri

destinationDirectory string

Il percorso della directory in cui verranno creati i segmenti dell’archivio.

options SplitArchiveSaveOptions

Opzioni per il salvataggio dell’archivio, incluso il nome del file.

Esempi

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

Osservazioni

Questo metodo compone diversi (n) file filename.z01, filename.z02, ..., filename.z(n-1), filename.zip.

Non è possibile rendere un archivio esistente multi-volume.

Eccezioni

InvalidOperationException

Questo archivio è stato aperto da una sorgente esistente.

NotSupportedException

Questo archivio è sia compresso con il metodo XZ che crittografato.

ArgumentNullException

destinationDirectory è null.

SecurityException

Il chiamante non ha il permesso richiesto per accedere alla directory.

ArgumentException

destinationDirectory contiene caratteri non validi come “, >, < o |.

PathTooLongException

Il percorso specificato supera la lunghezza massima definita dal sistema.

ObjectDisposedException

L’archivio è stato eliminato.

 Italiano