Class Archive

Class Archive

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

Tato třída představuje zip archivní soubor. Použijte ji k vytváření, extrakci nebo aktualizaci zip archivů.

public class Archive : IArchive, IDisposable

Dědičnost

objectArchive

Implementuje

IArchive, IDisposable

Děděné členy

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

Konstruktor

Archive(ArchiveEntrySettings)

Inicializuje novou instanci třídy Aspose.Zip.Archive s volitelnými nastaveními pro její položky.

public Archive(ArchiveEntrySettings newEntrySettings = null)

Parametry

newEntrySettings ArchiveEntrySettings

Nastavení komprese a šifrování používaná pro nově přidané položky Aspose.Zip.ArchiveEntry.
Pokud není specifikováno, bude použita nejběžnější komprese Deflate bez šifrování.

Příklady

Následující příklad ukazuje, jak komprimovat jeden soubor s výchozími nastaveními.

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)

Inicializuje novou instanci třídy Aspose.Zip.Archive a sestavuje seznam položek, které mohou být extrahovány z archivu.

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

Parametry

sourceStream Stream

Zdroj archivu.

loadOptions ArchiveLoadOptions

Možnosti pro načtení existujícího archivu.

newEntrySettings ArchiveEntrySettings

Nastavení komprese a šifrování používaná pro nově přidané položky Aspose.Zip.ArchiveEntry.
Pokud není specifikováno, bude použita nejběžnější komprese Deflate bez šifrování.

Příklady

Následující příklad extrahuje šifrovaný archiv a poté dekomprimuje první položku do 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);
    }
}

Poznámky

Tento konstruktor neprovádí dekompresi žádné položky. Viz metoda Aspose.Zip.ArchiveEntry.Open(System.String) pro dekompresi.

Výjimky

ArgumentException

sourceStream není seekable.

InvalidDataException

Šifrovací hlavička pro AES odporuje metodě komprese WinZip.

Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)

Inicializuje novou instanci třídy Aspose.Zip.Archive a sestavuje seznam položek, které mohou být extrahovány z archivu.

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

Parametry

path string

Úplná nebo relativní cesta k archivnímu souboru.

loadOptions ArchiveLoadOptions

Možnosti pro načtení existujícího archivu.

newEntrySettings ArchiveEntrySettings

Nastavení komprese a šifrování používaná pro nově přidané položky Aspose.Zip.ArchiveEntry.
Pokud není specifikováno, bude použita nejběžnější komprese Deflate bez šifrování.

Příklady

Následující příklad extrahuje šifrovaný archiv a poté dekomprimuje první položku do 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);
    }
}

Poznámky

Tento konstruktor neprovádí dekompresi žádné položky. Viz metoda Aspose.Zip.ArchiveEntry.Open(System.String) pro dekompresi.

Výjimky

ArgumentNullException

path je null.

SecurityException

Volající nemá potřebná oprávnění pro přístup.

ArgumentException

path je prázdný, obsahuje pouze bílé znaky nebo obsahuje neplatné znaky.

UnauthorizedAccessException

Přístup k souboru path je odepřen.

PathTooLongException

Zadaná path, název souboru nebo obojí překračuje maximální délku definovanou systémem. Například na platformách Windows musí být cesty kratší než 248 znaků a názvy souborů kratší než 260 znaků.

NotSupportedException

Soubor na path obsahuje dvojtečku (:) uprostřed řetězce.

FileNotFoundException

Soubor nebyl nalezen.

DirectoryNotFoundException

Zadaná cesta je neplatná, například je na nepřiřazené jednotce.

IOException

Soubor je již otevřen.

InvalidDataException

Soubor je poškozen.

Archive(string, string[], ArchiveLoadOptions)

Inicializuje novou instanci třídy Aspose.Zip.Archive z víceobjemového zip archivu a sestavuje seznam položek, které mohou být extrahovány z archivu.

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

Parametry

mainSegment string

Cesta k poslednímu segmentu víceobjemového archivu se centrálním adresářem.

Obvykle má tento segment příponu *.zip a je menší než ostatní.

segmentsInOrder string[]

Cesty k jednotlivým segmentům kromě posledního víceobjemového zip archivu podle pořadí.

Obvykle se nazývají filename.z01, filename.z02, ..., filename.z(n-1).

loadOptions ArchiveLoadOptions

Možnosti pro načtení existujícího archivu.

Příklady

Tento příklad extrahuje do adresáře archiv o třech segmentech.

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

Výjimky

EndOfStreamException

Nelze načíst ZIP hlavičky, protože poskytnuté soubory jsou poškozené.

Vlastnosti

Entries

Získá položky typu Aspose.Zip.ArchiveEntry, které tvoří archiv.

public ReadOnlyCollection<archiveentry> Entries { get; }

Hodnota vlastnosti

ReadOnlyCollection<ArchiveEntry&gt;

NewEntrySettings

Nastavení komprese a šifrování používaná pro nově přidané položky Aspose.Zip.ArchiveEntry.

public ArchiveEntrySettings NewEntrySettings { get; }

Hodnota vlastnosti

ArchiveEntrySettings

Metody

CreateEntries(DirectoryInfo, bool)

Přidá do archivu všechny soubory a adresáře rekurzivně v daném adresáři.

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

Parametry

directory DirectoryInfo

Adresář k zkomprimování.

includeRootDirectory bool

Indikuje, zda zahrnout samotný kořenový adresář nebo ne.

Návratová hodnota

Archive

Archiv se zkomponovanými položkami.

Příklady

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

Výjimky

DirectoryNotFoundException

Cesta k directory je neplatná, například je na nepřiřazené jednotce.

SecurityException

Volající nemá potřebná oprávnění pro přístup k directory.

CreateEntries(string, bool)

Přidá do archivu všechny soubory a adresáře rekurzivně v daném adresáři.

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

Parametry

sourceDirectory string

Adresář k zkomprimování.

includeRootDirectory bool

Indikuje, zda zahrnout samotný kořenový adresář nebo ne.

Návratová hodnota

Archive

Archiv se zkomponovanými položkami.

Příklady

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

CreateEntry(string, string, bool, ArchiveEntrySettings)

Vytvoří jednotlivou položku v rámci archivu.

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

Parametry

name string

Název položky.

path string

Úplný název nového souboru nebo relativní název souboru, který má být zkomprimován.

openImmediately bool

True, pokud se má soubor otevřít okamžitě, jinak se soubor otevře při ukládání archivu.

newEntrySettings ArchiveEntrySettings

Nastavení komprese a šifrování používaná pro přidanou položku Aspose.Zip.ArchiveEntry.

Návratová hodnota

ArchiveEntry

Instance zip položky.

Příklady

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

Poznámky

Název položky je nastaven pouze v parametru name. Název souboru poskytnutý v parametru path nemá vliv na název položky.

Pokud je soubor okamžitě otevřen s parametrem openImmediately, bude blokován, dokud nebude archiv uložen.

Výjimky

ArgumentNullException

path je null.

SecurityException

Volající nemá potřebná oprávnění pro přístup.

ArgumentException

path je prázdný, obsahuje pouze bílé znaky nebo obsahuje neplatné znaky.

UnauthorizedAccessException

Přístup k souboru path je odepřen.

PathTooLongException

Zadaná path, název souboru nebo obojí překračuje maximální délku definovanou systémem. Například na platformách Windows musí být cesty kratší než 248 znaků a názvy souborů kratší než 260 znaků.

NotSupportedException

Soubor na path obsahuje dvojtečku (:) uprostřed řetězce.

CreateEntry(string, Stream, ArchiveEntrySettings)

Vytvoří jednotlivou položku v rámci archivu.

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

Parametry

name string

Název položky.

source Stream

Vstupní proud pro položku.

newEntrySettings ArchiveEntrySettings

Nastavení komprese a šifrování používaná pro přidanou položku Aspose.Zip.ArchiveEntry.

Návratová hodnota

ArchiveEntry

Instance zip položky.

Příklady

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)

Vytvoří jednotlivou položku v rámci archivu.

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

Parametry

name string

Název položky.

fileInfo FileInfo

Metadata souboru, který má být zkomprimován.

openImmediately bool

True, pokud se má soubor otevřít okamžitě, jinak se soubor otevře při ukládání archivu.

newEntrySettings ArchiveEntrySettings

Nastavení komprese a šifrování používaná pro přidanou položku Aspose.Zip.ArchiveEntry.

Návratová hodnota

ArchiveEntry

Instance zip položky.

Příklady

Sestavte archiv s položkami šifrovanými různými metodami šifrování a hesly.

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

Poznámky

Název položky je nastaven pouze v parametru name. Název souboru poskytnutý v parametru fileInfo nemá vliv na název položky.

Pokud je soubor okamžitě otevřen s parametrem openImmediately, bude blokován, dokud nebude archiv uložen.

Výjimky

UnauthorizedAccessException

fileInfo je pouze pro čtení nebo je adresář.

DirectoryNotFoundException

Zadaná cesta je neplatná, například je na nepřiřazené jednotce.

IOException

Soubor je již otevřen.

CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)

Vytvoří jednotlivou položku v rámci archivu.

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

Parametry

name string

Název položky.

source Stream

Vstupní proud pro položku.

newEntrySettings ArchiveEntrySettings

Nastavení komprese a šifrování používaná pro přidanou položku Aspose.Zip.ArchiveEntry.

fileInfo FileSystemInfo

Metadata souboru nebo složky, která má být zkomprimována.

Návratová hodnota

ArchiveEntry

Instance zip položky.

Příklady

Sestavte archiv s šifrovanou položkou.

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

Poznámky

Název položky je nastaven pouze v parametru name. Název souboru poskytnutý v parametru fileInfo nemá vliv na název položky.

fileInfo může odkazovat na System.IO.DirectoryInfo, pokud je položka adresář.

Výjimky

InvalidOperationException

Oba source a fileInfo jsou null nebo source je null a fileInfo představuje adresář.

CreateEntry(string, Func<stream>, ArchiveEntrySettings)

Vytvoří jednotlivou položku v rámci archivu.

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

Parametry

name string

Název položky.

streamProvider Func<Stream&gt;

Metoda poskytující vstupní proud pro položku.

newEntrySettings ArchiveEntrySettings

Nastavení komprese a šifrování používaná pro přidanou položku Aspose.Zip.ArchiveEntry.

Návratová hodnota

ArchiveEntry

Instance zip položky.

Příklady

Sestavte archiv s šifrovanou položkou.

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

Poznámky

Tato metoda je určena pro .NET Framework 4.0 a vyšší a pro verzi .NET Standard 2.0.

DeleteEntry(ArchiveEntry)

Odstraní první výskyt konkrétní položky ze seznamu položek.

public Archive DeleteEntry(ArchiveEntry entry)

Parametry

entry ArchiveEntry

Položka, kterou chcete odstranit ze seznamu položek.

Návratová hodnota

Archive

Archiv s odstraněnou položkou.

Příklady

Zde je, jak můžete odstranit všechny položky kromě poslední:

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

Výjimky

ObjectDisposedException

Archiv byl zlikvidován.

DeleteEntry(int)

Odstraní položku ze seznamu položek podle indexu.

public Archive DeleteEntry(int entryIndex)

Parametry

entryIndex int

Nula-založený index položky, kterou chcete odstranit.

Návratová hodnota

Archive

Archiv s odstraněnou položkou.

Příklady

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

Výjimky

ObjectDisposedException

Archiv byl zlikvidován.

ArgumentOutOfRangeException

entryIndex je menší než 0.-nebo- entryIndex je rovno nebo větší než Entries počet.

Dispose()

Provádí úkoly definované aplikací spojené s uvolňováním, uvolňováním nebo resetováním neřízených prostředků.

public void Dispose()

Dispose(bool)

Provádí úkoly definované aplikací spojené s uvolňováním, uvolňováním nebo resetováním neřízených prostředků.

protected virtual void Dispose(bool disposing)

Parametry

disposing bool

Zda by měly být uvolněny řízené prostředky.

ExtractToDirectory(string)

Extrahuje všechny soubory v archivu do poskytnutého adresáře.

public void ExtractToDirectory(string destinationDirectory)

Parametry

destinationDirectory string

Cesta k adresáři, do kterého mají být umístěny extrahované soubory.

Příklady

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

Poznámky

Pokud adresář neexistuje, bude vytvořen.

Výjimky

ArgumentNullException

destinationDirectory je null.

PathTooLongException

Zadaná cesta, název souboru nebo obojí překračuje maximální délku definovanou systémem. Například na platformách Windows musí být cesty kratší než 248 znaků a názvy souborů kratší než 260 znaků.

SecurityException

Volající nemá potřebná oprávnění pro přístup k existujícímu adresáři.

NotSupportedException

Pokud adresář neexistuje, cesta obsahuje znak dvojtečky (:) který není součástí popisku jednotky (“C:").

ArgumentException

destinationDirectory je řetězec s nulovou délkou, obsahuje pouze bílé znaky nebo obsahuje jeden nebo více neplatných znaků. Neplatné znaky můžete zjistit pomocí metody System.IO.Path.GetInvalidPathChars.
-nebo- cesta je předcházena nebo obsahuje pouze znak dvojtečky (:).

IOException

Adresář určený cestou je soubor. -nebo- Síťový název není znám.

InvalidDataException

Bylo poskytnuto nesprávné heslo. -nebo- Archiv je poškozen.

Save(Stream, ArchiveSaveOptions)

Uloží archiv do poskytnutého proudu.

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

Parametry

outputStream Stream

Cílový proud.

saveOptions ArchiveSaveOptions

Možnosti pro ukládání archivu.

Příklady

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

Poznámky

outputStream musí být zapisovatelný.

Výjimky

ArgumentException

outputStream není zapisovatelný.

ObjectDisposedException

Archiv byl zlikvidován.

Save(string, ArchiveSaveOptions)

Uloží archiv do poskytnutého cílového souboru.

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

Parametry

destinationFileName string

Cesta archivu, který má být vytvořen. Pokud zadaný název souboru odkazuje na existující soubor, bude přepsán.

saveOptions ArchiveSaveOptions

Možnosti pro ukládání archivu.

Příklady

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

Poznámky

Je možné uložit archiv na stejnou cestu, ze které byl načten. Nicméně to není doporučeno, protože tento přístup používá kopírování do dočasného souboru.

Výjimky

ArgumentNullException

destinationFileName je null.

SecurityException

Volající nemá potřebná oprávnění pro přístup.

ArgumentException

destinationFileName je prázdný, obsahuje pouze bílé znaky nebo obsahuje neplatné znaky.

UnauthorizedAccessException

Přístup k souboru destinationFileName je odepřen.

PathTooLongException

Zadaná destinationFileName, název souboru nebo obojí překračuje maximální délku definovanou systémem.
Například na platformách Windows musí být cesty kratší než 248 znaků a názvy souborů kratší než 260 znaků.

NotSupportedException

Soubor na destinationFileName obsahuje dvojtečku (:) uprostřed řetězce.

FileNotFoundException

Soubor nebyl nalezen.

DirectoryNotFoundException

Zadaná cesta je neplatná, například je na nepřiřazené jednotce.

IOException

Soubor je již otevřen.

SaveSplit(string, SplitArchiveSaveOptions)

Uloží víceobjemový archiv do poskytnutého cílového adresáře.

public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)

Parametry

destinationDirectory string

Cesta k adresáři, kde mají být vytvořeny segmenty archivu.

options SplitArchiveSaveOptions

Možnosti pro ukládání archivu, včetně názvu souboru.

Příklady

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

Poznámky

Tato metoda sestaví několik (n) souborů filename.z01, filename.z02, ..., filename.z(n-1), filename.zip.

Nelze vytvořit existující archiv jako víceobjemový.

Výjimky

InvalidOperationException

Tento archiv byl otevřen z existujícího zdroje.

NotSupportedException

Tento archiv je jak komprimován metodou XZ, tak šifrován.

ArgumentNullException

destinationDirectory je null.

SecurityException

Volající nemá potřebná oprávnění pro přístup k adresáři.

ArgumentException

destinationDirectory obsahuje neplatné znaky, jako jsou “, >, < nebo |.

PathTooLongException

Zadaná cesta překračuje maximální délku definovanou systémem.

ObjectDisposedException

Archiv byl zlikvidován.

 Čeština