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à
Implementa
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
sourceStream
non è cercabile.
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
path
è null.
Il chiamante non ha il permesso richiesto per accedere.
Il path
è vuoto, contiene solo spazi bianchi o contiene caratteri non validi.
Accesso al file path
negato.
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.
Il file in path
contiene un due punti (:) nel mezzo della stringa.
Il file non è stato trovato.
Il percorso specificato non è valido, ad esempio se si trova su un’unità non mappata.
Il file è già aperto.
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
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>
NewEntrySettings
Impostazioni di compressione e crittografia utilizzate per gli elementi Aspose.Zip.ArchiveEntry appena aggiunti.
public ArchiveEntrySettings NewEntrySettings { get; }
Valore della Proprietà
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
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
Il percorso per directory
non è valido, ad esempio se si trova su un’unità non mappata.
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
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
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
path
è null.
Il chiamante non ha il permesso richiesto per accedere.
Il path
è vuoto, contiene solo spazi bianchi o contiene caratteri non validi.
Accesso al file path
negato.
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.
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
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
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
fileInfo
è di sola lettura o è una directory.
Il percorso specificato non è valido, ad esempio se si trova su un’unità non mappata.
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
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
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>
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
Istanza di voce zip.
Esempi
Componi l'archivio con una voce crittografata.
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);
}
}
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
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 > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
Eccezioni
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
L’archivio con la voce eliminata.
Esempi
using (var archive = new TarArchive("two_files.zip"))
{
archive.DeleteEntry(0);
archive.Save("single_file.zip");
}
Eccezioni
L’archivio è stato eliminato.
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
destinationDirectory
è null.
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.
Il chiamante non ha il permesso richiesto per accedere alla directory esistente.
Se la directory non esiste, il percorso contiene un carattere due punti (:) che non è parte di un’etichetta di unità (“C:").
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 (:).
La directory specificata dal percorso è un file. -o- Il nome di rete non è noto.
È 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
outputStream
non è scrivibile.
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
destinationFileName
è null.
Il chiamante non ha il permesso richiesto per accedere.
Il destinationFileName
è vuoto, contiene solo spazi bianchi o contiene caratteri non validi.
Accesso al file destinationFileName
negato.
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.
Il file in destinationFileName
contiene un due punti (:) nel mezzo della stringa.
Il file non è stato trovato.
Il percorso specificato non è valido, ad esempio se si trova su un’unità non mappata.
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
Questo archivio è stato aperto da una sorgente esistente.
Questo archivio è sia compresso con il metodo XZ che crittografato.
destinationDirectory
è null.
Il chiamante non ha il permesso richiesto per accedere alla directory.
destinationDirectory
contiene caratteri non validi come “, >, < o |.
Il percorso specificato supera la lunghezza massima definita dal sistema.
L’archivio è stato eliminato.