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
Implementuje
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
sourceStream
není seekable.
Š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
path
je null.
Volající nemá potřebná oprávnění pro přístup.
path
je prázdný, obsahuje pouze bílé znaky nebo obsahuje neplatné znaky.
Přístup k souboru path
je odepřen.
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ů.
Soubor na path
obsahuje dvojtečku (:) uprostřed řetězce.
Soubor nebyl nalezen.
Zadaná cesta je neplatná, například je na nepřiřazené jednotce.
Soubor je již otevřen.
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
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>
NewEntrySettings
Nastavení komprese a šifrování používaná pro nově přidané položky Aspose.Zip.ArchiveEntry.
public ArchiveEntrySettings NewEntrySettings { get; }
Hodnota vlastnosti
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
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
Cesta k directory
je neplatná, například je na nepřiřazené jednotce.
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
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
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
path
je null.
Volající nemá potřebná oprávnění pro přístup.
path
je prázdný, obsahuje pouze bílé znaky nebo obsahuje neplatné znaky.
Přístup k souboru path
je odepřen.
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ů.
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
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
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
fileInfo
je pouze pro čtení nebo je adresář.
Zadaná cesta je neplatná, například je na nepřiřazené jednotce.
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
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
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>
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
Instance zip položky.
Příklady
Sestavte archiv s šifrovanou položkou.
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);
}
}
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
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 > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
Výjimky
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
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
Archiv byl zlikvidován.
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
destinationDirectory
je null.
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ů.
Volající nemá potřebná oprávnění pro přístup k existujícímu adresáři.
Pokud adresář neexistuje, cesta obsahuje znak dvojtečky (:) který není součástí popisku jednotky (“C:").
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 (:).
Adresář určený cestou je soubor. -nebo- Síťový název není znám.
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
outputStream
není zapisovatelný.
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
destinationFileName
je null.
Volající nemá potřebná oprávnění pro přístup.
destinationFileName
je prázdný, obsahuje pouze bílé znaky nebo obsahuje neplatné znaky.
Přístup k souboru destinationFileName
je odepřen.
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ů.
Soubor na destinationFileName
obsahuje dvojtečku (:) uprostřed řetězce.
Soubor nebyl nalezen.
Zadaná cesta je neplatná, například je na nepřiřazené jednotce.
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
Tento archiv byl otevřen z existujícího zdroje.
Tento archiv je jak komprimován metodou XZ, tak šifrován.
destinationDirectory
je null.
Volající nemá potřebná oprávnění pro přístup k adresáři.
destinationDirectory
obsahuje neplatné znaky, jako jsou “, >, < nebo |.
Zadaná cesta překračuje maximální délku definovanou systémem.
Archiv byl zlikvidován.