Class Archive
Namespace: Aspose.Zip
Assembly: Aspose.Zip.dll (25.1.0)
Cette classe représente un fichier d’archive zip. Utilisez-la pour composer, extraire ou mettre à jour des archives zip.
public class Archive : IArchive, IDisposable
Héritage
Implémente
Membres hérités
object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
Constructeurs
Archive(ArchiveEntrySettings)
Initialise une nouvelle instance de la classe Aspose.Zip.Archive avec des paramètres optionnels pour ses entrées.
public Archive(ArchiveEntrySettings newEntrySettings = null)
Paramètres
newEntrySettings
ArchiveEntrySettings
Paramètres de compression et de cryptage utilisés pour les éléments Aspose.Zip.ArchiveEntry nouvellement ajoutés.
Si non spécifié, la compression Deflate la plus courante sans cryptage sera utilisée.
Exemples
L'exemple suivant montre comment compresser un seul fichier avec les paramètres par défaut.
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)
Initialise une nouvelle instance de la classe Aspose.Zip.Archive et compose une liste d’entrées pouvant être extraites de l’archive.
public Archive(Stream sourceStream, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)
Paramètres
sourceStream
Stream
La source de l’archive.
loadOptions
ArchiveLoadOptions
Options pour charger l’archive existante.
newEntrySettings
ArchiveEntrySettings
Paramètres de compression et de cryptage utilisés pour les éléments Aspose.Zip.ArchiveEntry nouvellement ajoutés.
Si non spécifié, la compression Deflate la plus courante sans cryptage sera utilisée.
Exemples
L'exemple suivant extrait une archive cryptée, puis décompresse la première entrée dans 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);
}
}
Remarques
Ce constructeur ne décompresse aucune entrée. Voir la méthode Aspose.Zip.ArchiveEntry.Open(System.String) pour décompresser.
Exceptions
sourceStream
n’est pas accessible en recherche.
L’en-tête de cryptage pour AES contredit la méthode de compression WinZip.
Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)
Initialise une nouvelle instance de la classe Aspose.Zip.Archive et compose une liste d’entrées pouvant être extraites de l’archive.
public Archive(string path, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)
Paramètres
path
string
Le chemin complet ou le chemin relatif vers le fichier d’archive.
loadOptions
ArchiveLoadOptions
Options pour charger l’archive existante.
newEntrySettings
ArchiveEntrySettings
Paramètres de compression et de cryptage utilisés pour les éléments Aspose.Zip.ArchiveEntry nouvellement ajoutés.
Si non spécifié, la compression Deflate la plus courante sans cryptage sera utilisée.
Exemples
L'exemple suivant extrait une archive cryptée, puis décompresse la première entrée dans 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);
}
}
Remarques
Ce constructeur ne décompresse aucune entrée. Voir la méthode Aspose.Zip.ArchiveEntry.Open(System.String) pour décompresser.
Exceptions
path
est nul.
L’appelant n’a pas la permission requise pour accéder.
Le path
est vide, ne contient que des espaces blancs ou contient des caractères invalides.
L’accès au fichier path
est refusé.
Le path
, le nom de fichier, ou les deux dépassent la longueur maximale définie par le système. Par exemple, sur les plateformes Windows, les chemins doivent être inférieurs à 248 caractères, et les noms de fichiers doivent être inférieurs à 260 caractères.
Le fichier à path
contient un deux-points (:) au milieu de la chaîne.
Le fichier est introuvable.
Le chemin spécifié est invalide, comme étant sur un lecteur non mappé.
Le fichier est déjà ouvert.
Le fichier est corrompu.
Archive(string, string[], ArchiveLoadOptions)
Initialise une nouvelle instance de la classe Aspose.Zip.Archive à partir d’une archive zip multi-volumes et compose une liste d’entrées pouvant être extraites de l’archive.
public Archive(string mainSegment, string[] segmentsInOrder, ArchiveLoadOptions loadOptions = null)
Paramètres
mainSegment
string
Chemin vers le dernier segment de l’archive multi-volumes avec le répertoire central.
En général, ce segment a l'extension *.zip et est plus petit que les autres.
segmentsInOrder
string[]
Chemins vers chaque segment sauf le dernier de l’archive zip multi-volumes dans l’ordre.
En général, ils sont nommés filename.z01, filename.z02, ..., filename.z(n-1).
loadOptions
ArchiveLoadOptions
Options pour charger l’archive existante.
Exemples
Cet exemple extrait dans un répertoire une archive de trois segments.
using (Archive a = new Archive("archive.zip", new string[] { "archive.z01", "archive.z02" }))
{
a.ExtractToDirectory("destination");
}
Exceptions
Impossible de charger les en-têtes ZIP car les fichiers fournis sont corrompus.
Propriétés
Entries
Obtient les entrées de type Aspose.Zip.ArchiveEntry constituant l’archive.
public ReadOnlyCollection<archiveentry> Entries { get; }
Valeur de propriété
ReadOnlyCollection<ArchiveEntry>
NewEntrySettings
Paramètres de compression et de cryptage utilisés pour les éléments Aspose.Zip.ArchiveEntry nouvellement ajoutés.
public ArchiveEntrySettings NewEntrySettings { get; }
Valeur de propriété
Méthodes
CreateEntries(DirectoryInfo, bool)
Ajoute à l’archive tous les fichiers et répertoires de manière récursive dans le répertoire donné.
public Archive CreateEntries(DirectoryInfo directory, bool includeRootDirectory = true)
Paramètres
directory
DirectoryInfo
Répertoire à compresser.
includeRootDirectory
bool
Indique si le répertoire racine lui-même doit être inclus ou non.
Retourne
L’archive avec les entrées composées.
Exemples
using (Archive archive = new Archive())
{
DirectoryInfo folder = new DirectoryInfo("C:\folder");
archive.CreateEntries(folder);
archive.Save("folder.zip");
}
Exceptions
Le chemin vers directory
est invalide, comme étant sur un lecteur non mappé.
L’appelant n’a pas la permission requise pour accéder à directory
.
CreateEntries(string, bool)
Ajoute à l’archive tous les fichiers et répertoires de manière récursive dans le répertoire donné.
public Archive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)
Paramètres
sourceDirectory
string
Répertoire à compresser.
includeRootDirectory
bool
Indique si le répertoire racine lui-même doit être inclus ou non.
Retourne
L’archive avec les entrées composées.
Exemples
using (Archive archive = new Archive())
{
archive.CreateEntries("C:\folder");
archive.Save("folder.zip");
}
CreateEntry(string, string, bool, ArchiveEntrySettings)
Crée une entrée unique dans l’archive.
public ArchiveEntry CreateEntry(string name, string path, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)
Paramètres
name
string
Le nom de l’entrée.
path
string
Le nom complet du nouveau fichier, ou le nom de fichier relatif à compresser.
openImmediately
bool
Vrai si le fichier doit être ouvert immédiatement, sinon ouvrir le fichier lors de l’enregistrement de l’archive.
newEntrySettings
ArchiveEntrySettings
Paramètres de compression et de cryptage utilisés pour l’élément Aspose.Zip.ArchiveEntry ajouté.
Retourne
Instance d’entrée zip.
Exemples
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var archive = new Archive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(zipFile);
}
}
Remarques
Le nom de l'entrée est uniquement défini dans le paramètre name
. Le nom de fichier fourni dans le paramètre path
n'affecte pas le nom de l'entrée.
Si le fichier est ouvert immédiatement avec le paramètre openImmediately
, il devient bloqué jusqu'à ce que l'archive soit enregistrée.
Exceptions
path
est nul.
L’appelant n’a pas la permission requise pour accéder.
Le path
est vide, ne contient que des espaces blancs, ou contient des caractères invalides.
L’accès au fichier path
est refusé.
Le path
, le nom de fichier, ou les deux dépassent la longueur maximale définie par le système. Par exemple, sur les plateformes Windows, les chemins doivent être inférieurs à 248 caractères, et les noms de fichiers doivent être inférieurs à 260 caractères.
Le fichier à path
contient un deux-points (:) au milieu de la chaîne.
CreateEntry(string, Stream, ArchiveEntrySettings)
Crée une entrée unique dans l’archive.
public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings = null)
Paramètres
name
string
Le nom de l’entrée.
source
Stream
Le flux d’entrée pour l’entrée.
newEntrySettings
ArchiveEntrySettings
Paramètres de compression et de cryptage utilisés pour l’élément Aspose.Zip.ArchiveEntry ajouté.
Retourne
Instance d’entrée zip.
Exemples
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)
Crée une entrée unique dans l’archive.
public ArchiveEntry CreateEntry(string name, FileInfo fileInfo, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)
Paramètres
name
string
Le nom de l’entrée.
fileInfo
FileInfo
Les métadonnées du fichier à compresser.
openImmediately
bool
Vrai si le fichier doit être ouvert immédiatement, sinon ouvrir le fichier lors de l’enregistrement de l’archive.
newEntrySettings
ArchiveEntrySettings
Paramètres de compression et de cryptage utilisés pour l’élément Aspose.Zip.ArchiveEntry ajouté.
Retourne
Instance d’entrée zip.
Exemples
Composer une archive avec des entrées chiffrées avec différentes méthodes de cryptage et mots de passe.
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);
}
}
Remarques
Le nom de l'entrée est uniquement défini dans le paramètre name
. Le nom de fichier fourni dans le paramètre fileInfo
n'affecte pas le nom de l'entrée.
Si le fichier est ouvert immédiatement avec le paramètre openImmediately
, il devient bloqué jusqu'à ce que l'archive soit enregistrée.
Exceptions
fileInfo
est en lecture seule ou est un répertoire.
Le chemin spécifié est invalide, comme étant sur un lecteur non mappé.
Le fichier est déjà ouvert.
CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)
Crée une entrée unique dans l’archive.
public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings, FileSystemInfo fileInfo)
Paramètres
name
string
Le nom de l’entrée.
source
Stream
Le flux d’entrée pour l’entrée.
newEntrySettings
ArchiveEntrySettings
Paramètres de compression et de cryptage utilisés pour l’élément Aspose.Zip.ArchiveEntry ajouté.
fileInfo
FileSystemInfo
Les métadonnées du fichier ou du dossier à compresser.
Retourne
Instance d’entrée zip.
Exemples
Composer une archive avec une entrée chiffrée.
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);
}
}
Remarques
Le nom de l'entrée est uniquement défini dans le paramètre name
. Le nom de fichier fourni dans le paramètre fileInfo
n'affecte pas le nom de l'entrée.
fileInfo
peut faire référence à System.IO.DirectoryInfo si l'entrée est un répertoire.
Exceptions
Les deux source
et fileInfo
sont nuls ou source
est nul et fileInfo
représente un répertoire.
CreateEntry(string, Func<stream>, ArchiveEntrySettings)
Crée une entrée unique dans l’archive.
public ArchiveEntry CreateEntry(string name, Func<stream> streamProvider, ArchiveEntrySettings newEntrySettings = null)
Paramètres
name
string
Le nom de l’entrée.
streamProvider
Func<Stream>
La méthode fournissant le flux d’entrée pour l’entrée.
newEntrySettings
ArchiveEntrySettings
Paramètres de compression et de cryptage utilisés pour l’élément Aspose.Zip.ArchiveEntry ajouté.
Retourne
Instance d’entrée zip.
Exemples
Composer une archive avec une entrée chiffrée.
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);
}
}
Remarques
Cette méthode est pour .NET Framework 4.0 et supérieur et pour la version .NET Standard 2.0.
DeleteEntry(ArchiveEntry)
Supprime la première occurrence d’une entrée spécifique de la liste des entrées.
public Archive DeleteEntry(ArchiveEntry entry)
Paramètres
entry
ArchiveEntry
L’entrée à supprimer de la liste des entrées.
Retourne
L’archive avec l’entrée supprimée.
Exemples
Voici comment vous pouvez supprimer toutes les entrées sauf la dernière :
using (var archive = new Archive("archive.zip"))
{
while (archive.Entries.Count > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
Exceptions
L’archive est supprimée.
DeleteEntry(int)
Supprime l’entrée de la liste des entrées par index.
public Archive DeleteEntry(int entryIndex)
Paramètres
entryIndex
int
L’index basé sur zéro de l’entrée à supprimer.
Retourne
L’archive avec l’entrée supprimée.
Exemples
using (var archive = new TarArchive("two_files.zip"))
{
archive.DeleteEntry(0);
archive.Save("single_file.zip");
}
Exceptions
L’archive est supprimée.
entryIndex
est inférieur à 0.-ou- entryIndex
est égal ou supérieur au nombre d’Entries
.
Dispose()
Effectue des tâches définies par l’application associées à la libération, au relâchement ou à la réinitialisation des ressources non gérées.
public void Dispose()
Dispose(bool)
Effectue des tâches définies par l’application associées à la libération, au relâchement ou à la réinitialisation des ressources non gérées.
protected virtual void Dispose(bool disposing)
Paramètres
disposing
bool
Indique si les ressources gérées doivent être libérées.
ExtractToDirectory(string)
Extrait tous les fichiers de l’archive dans le répertoire fourni.
public void ExtractToDirectory(string destinationDirectory)
Paramètres
destinationDirectory
string
Le chemin vers le répertoire où placer les fichiers extraits.
Exemples
using (var archive = new Archive("archive.zip"))
{
archive.ExtractToDirectory("C:\extracted");
}
Remarques
Si le répertoire n’existe pas, il sera créé.
Exceptions
destinationDirectory
est nul.
Le chemin spécifié, le nom de fichier, ou les deux dépassent la longueur maximale définie par le système. Par exemple, sur les plateformes Windows, les chemins doivent être inférieurs à 248 caractères et les noms de fichiers doivent être inférieurs à 260 caractères.
L’appelant n’a pas la permission requise pour accéder au répertoire existant.
Si le répertoire n’existe pas, le chemin contient un caractère deux-points (:) qui ne fait pas partie d’une étiquette de lecteur (“C:").
destinationDirectory
est une chaîne de longueur zéro, ne contient que des espaces blancs, ou contient un ou plusieurs caractères invalides. Vous pouvez interroger les caractères invalides en utilisant la méthode System.IO.Path.GetInvalidPathChars.
-ou- le chemin est préfixé par, ou ne contient que, un caractère deux-points (:).
Le répertoire spécifié par le chemin est un fichier. -ou- Le nom du réseau n’est pas connu.
Un mot de passe incorrect a été fourni. - ou - L’archive est corrompue.
Save(Stream, ArchiveSaveOptions)
Enregistre l’archive dans le flux fourni.
public void Save(Stream outputStream, ArchiveSaveOptions saveOptions = null)
Paramètres
outputStream
Stream
Flux de destination.
saveOptions
ArchiveSaveOptions
Options pour l’enregistrement de l’archive.
Exemples
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var archive = new Archive())
{
archive.CreateEntry("entry.bin", "data.bin");
archive.Save(zipFile);
}
}
Remarques
outputStream
doit être écrivable.
Exceptions
outputStream
n’est pas écrivable.
L’archive est supprimée.
Save(string, ArchiveSaveOptions)
Enregistre l’archive dans le fichier de destination fourni.
public void Save(string destinationFileName, ArchiveSaveOptions saveOptions = null)
Paramètres
destinationFileName
string
Le chemin de l’archive à créer. Si le nom de fichier spécifié pointe vers un fichier existant, il sera écrasé.
saveOptions
ArchiveSaveOptions
Options pour l’enregistrement de l’archive.
Exemples
using (var archive = new Archive())
{
archive.CreateEntry("entry.bin", "data.bin");
archive.Save("archive.zip", new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
Remarques
Il est possible d'enregistrer une archive au même chemin qu'elle a été chargée. Cependant, cela n'est pas recommandé car cette approche utilise la copie dans un fichier temporaire.
Exceptions
destinationFileName
est nul.
L’appelant n’a pas la permission requise pour accéder.
Le destinationFileName
est vide, ne contient que des espaces blancs, ou contient des caractères invalides.
L’accès au fichier destinationFileName
est refusé.
Le destinationFileName
, le nom de fichier, ou les deux dépassent la longueur maximale définie par le système.
Par exemple, sur les plateformes Windows, les chemins doivent être inférieurs à 248 caractères, et les noms de fichiers doivent être inférieurs à 260 caractères.
Le fichier à destinationFileName
contient un deux-points (:) au milieu de la chaîne.
Le fichier est introuvable.
Le chemin spécifié est invalide, comme étant sur un lecteur non mappé.
Le fichier est déjà ouvert.
SaveSplit(string, SplitArchiveSaveOptions)
Enregistre une archive multi-volumes dans le répertoire de destination fourni.
public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)
Paramètres
destinationDirectory
string
Le chemin vers le répertoire où les segments d’archive doivent être créés.
options
SplitArchiveSaveOptions
Options pour l’enregistrement de l’archive, y compris le nom de fichier.
Exemples
using (Archive archive = new Archive())
{
archive.CreateEntry("entry.bin", "data.bin");
archive.SaveSplit(@"C:\Folder", new SplitArchiveSaveOptions("volume", 65536));
}
Remarques
Cette méthode compose plusieurs (n
) fichiers filename.z01, filename.z02, ..., filename.z(n-1), filename.zip.
Impossible de transformer une archive existante en multi-volumes.
Exceptions
Cette archive a été ouverte à partir d’une source existante.
Cette archive est à la fois compressée avec la méthode XZ et cryptée.
destinationDirectory
est nul.
L’appelant n’a pas la permission requise pour accéder au répertoire.
destinationDirectory
contient des caractères invalides tels que “, >, <, ou |.
Le chemin spécifié dépasse la longueur maximale définie par le système.
L’archive est supprimée.