Class Archive

Class Archive

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

Ta klasa reprezentuje plik archiwum zip. Użyj jej do tworzenia, wyodrębniania lub aktualizacji archiwów zip.

public class Archive : IArchive, IDisposable

Dziedziczenie

objectArchive

Implementuje

IArchive, IDisposable

Członkowie dziedziczeni

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

Konstruktory

Archive(ArchiveEntrySettings)

Inicjalizuje nową instancję klasy Aspose.Zip.Archive z opcjonalnymi ustawieniami dla jej wpisów.

public Archive(ArchiveEntrySettings newEntrySettings = null)

Parametry

newEntrySettings ArchiveEntrySettings

Ustawienia kompresji i szyfrowania używane dla nowo dodanych elementów Aspose.Zip.ArchiveEntry. Jeśli nie określono, używana będzie najczęściej stosowana kompresja Deflate bez szyfrowania.

Przykłady

Poniższy przykład pokazuje, jak skompresować pojedynczy plik z domyślnymi ustawieniami.

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)

Inicjalizuje nową instancję klasy Aspose.Zip.Archive i tworzy listę wpisów, które można wyodrębnić z archiwum.

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

Parametry

sourceStream Stream

Źródło archiwum.

loadOptions ArchiveLoadOptions

Opcje do załadowania istniejącego archiwum.

newEntrySettings ArchiveEntrySettings

Ustawienia kompresji i szyfrowania używane dla nowo dodanych elementów Aspose.Zip.ArchiveEntry. Jeśli nie określono, używana będzie najczęściej stosowana kompresja Deflate bez szyfrowania.

Przykłady

Poniższy przykład wyodrębnia zaszyfrowane archiwum, a następnie dekompresuje pierwszy wpis 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);
    }
}

Uwagi

Ten konstruktor nie dekompresuje żadnego wpisu. Zobacz metodę Aspose.Zip.ArchiveEntry.Open(System.String) do dekompresji.

Wyjątki

ArgumentException

sourceStream nie jest możliwe do przewijania.

InvalidDataException

Nagłówek szyfrowania dla AES jest sprzeczny z metodą kompresji WinZip.

Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)

Inicjalizuje nową instancję klasy Aspose.Zip.Archive i tworzy listę wpisów, które można wyodrębnić z archiwum.

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

Parametry

path string

Pełna lub względna ścieżka do pliku archiwum.

loadOptions ArchiveLoadOptions

Opcje do załadowania istniejącego archiwum.

newEntrySettings ArchiveEntrySettings

Ustawienia kompresji i szyfrowania używane dla nowo dodanych elementów Aspose.Zip.ArchiveEntry. Jeśli nie określono, używana będzie najczęściej stosowana kompresja Deflate bez szyfrowania.

Przykłady

Poniższy przykład wyodrębnia zaszyfrowane archiwum, a następnie dekompresuje pierwszy wpis 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);
    }
}

Uwagi

Ten konstruktor nie dekompresuje żadnego wpisu. Zobacz metodę Aspose.Zip.ArchiveEntry.Open(System.String) do dekompresji.

Wyjątki

ArgumentNullException

path jest null.

SecurityException

Wywołujący nie ma wymaganych uprawnień do dostępu.

ArgumentException

path jest pusty, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki.

UnauthorizedAccessException

Dostęp do pliku path jest zabroniony.

PathTooLongException

Określona path, nazwa pliku lub obie przekraczają maksymalną długość określoną przez system. Na przykład na platformach opartych na Windows, ścieżki muszą mieć mniej niż 248 znaków, a nazwy plików muszą mieć mniej niż 260 znaków.

NotSupportedException

Plik w path zawiera dwukropek (:) w środku ciągu.

FileNotFoundException

Plik nie został znaleziony.

DirectoryNotFoundException

Określona ścieżka jest nieprawidłowa, na przykład znajduje się na nieprzypisanym dysku.

IOException

Plik jest już otwarty.

InvalidDataException

Plik jest uszkodzony.

Archive(string, string[], ArchiveLoadOptions)

Inicjalizuje nową instancję klasy Aspose.Zip.Archive z wielosegmentowego archiwum zip i tworzy listę wpisów, które można wyodrębnić z archiwum.

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

Parametry

mainSegment string

Ścieżka do ostatniego segmentu wielosegmentowego archiwum z centralnym katalogiem.

Zazwyczaj ten segment ma rozszerzenie *.zip i jest mniejszy od innych.

segmentsInOrder string[]

Ścieżki do każdego segmentu oprócz ostatniego wielosegmentowego archiwum zip w odpowiedniej kolejności.

Zazwyczaj nazywane są filename.z01, filename.z02, …, filename.z(n-1).

loadOptions ArchiveLoadOptions

Opcje do załadowania istniejącego archiwum.

Przykłady

Ten przykład wyodrębnia do katalogu archiwum składające się z trzech segmentów.

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

Wyjątki

EndOfStreamException

Nie można załadować nagłówków ZIP, ponieważ podane pliki są uszkodzone.

Właściwości

Entries

Pobiera wpisy typu Aspose.Zip.ArchiveEntry stanowiące archiwum.

public ReadOnlyCollection<archiveentry> Entries { get; }

Wartość właściwości

ReadOnlyCollection<ArchiveEntry&gt;

NewEntrySettings

Ustawienia kompresji i szyfrowania używane dla nowo dodanych elementów Aspose.Zip.ArchiveEntry.

public ArchiveEntrySettings NewEntrySettings { get; }

Wartość właściwości

ArchiveEntrySettings

Metody

CreateEntries(DirectoryInfo, bool)

Dodaje do archiwum wszystkie pliki i katalogi rekurencyjnie w podanym katalogu.

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

Parametry

directory DirectoryInfo

Katalog do skompresowania.

includeRootDirectory bool

Określa, czy dołączyć sam katalog główny, czy nie.

Zwraca

Archive

Archiwum z utworzonymi wpisami.

Przykłady

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

Wyjątki

DirectoryNotFoundException

Ścieżka do directory jest nieprawidłowa, na przykład znajduje się na nieprzypisanym dysku.

SecurityException

Wywołujący nie ma wymaganych uprawnień do dostępu do directory.

CreateEntries(string, bool)

Dodaje do archiwum wszystkie pliki i katalogi rekurencyjnie w podanym katalogu.

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

Parametry

sourceDirectory string

Katalog do skompresowania.

includeRootDirectory bool

Określa, czy dołączyć sam katalog główny, czy nie.

Zwraca

Archive

Archiwum z utworzonymi wpisami.

Przykłady

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

CreateEntry(string, string, bool, ArchiveEntrySettings)

Tworzy pojedynczy wpis w archiwum.

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

Parametry

name string

Nazwa wpisu.

path string

Pełna nazwa nowego pliku lub względna nazwa pliku do skompresowania.

openImmediately bool

Prawda, jeśli plik ma być otwarty natychmiast, w przeciwnym razie plik zostanie otwarty po zapisaniu archiwum.

newEntrySettings ArchiveEntrySettings

Ustawienia kompresji i szyfrowania używane dla dodanego elementu Aspose.Zip.ArchiveEntry.

Zwraca

ArchiveEntry

Instancja wpisu zip.

Przykłady

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

Uwagi

Nazwa wpisu jest ustawiana wyłącznie w parametrze name. Nazwa pliku podana w parametrze path nie wpływa na nazwę wpisu.

Jeśli plik jest otwarty natychmiast z parametrem openImmediately, zostaje zablokowany do momentu zapisania archiwum.

Wyjątki

ArgumentNullException

path jest null.

SecurityException

Wywołujący nie ma wymaganych uprawnień do dostępu.

ArgumentException

path jest pusty, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki.

UnauthorizedAccessException

Dostęp do pliku path jest zabroniony.

PathTooLongException

Określona path, nazwa pliku lub obie przekraczają maksymalną długość określoną przez system. Na przykład na platformach opartych na Windows, ścieżki muszą mieć mniej niż 248 znaków, a nazwy plików muszą mieć mniej niż 260 znaków.

NotSupportedException

Plik w path zawiera dwukropek (:) w środku ciągu.

CreateEntry(string, Stream, ArchiveEntrySettings)

Tworzy pojedynczy wpis w archiwum.

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

Parametry

name string

Nazwa wpisu.

source Stream

Strumień wejściowy dla wpisu.

newEntrySettings ArchiveEntrySettings

Ustawienia kompresji i szyfrowania używane dla dodanego elementu Aspose.Zip.ArchiveEntry.

Zwraca

ArchiveEntry

Instancja wpisu zip.

Przykłady

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)

Tworzy pojedynczy wpis w archiwum.

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

Parametry

name string

Nazwa wpisu.

fileInfo FileInfo

Metadane pliku do skompresowania.

openImmediately bool

Prawda, jeśli plik ma być otwarty natychmiast, w przeciwnym razie plik zostanie otwarty po zapisaniu archiwum.

newEntrySettings ArchiveEntrySettings

Ustawienia kompresji i szyfrowania używane dla dodanego elementu Aspose.Zip.ArchiveEntry.

Zwraca

ArchiveEntry

Instancja wpisu zip.

Przykłady

Tworzenie archiwum z wpisami szyfrowanymi różnymi metodami szyfrowania i hasłami.

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

Uwagi

Nazwa wpisu jest ustawiana wyłącznie w parametrze name. Nazwa pliku podana w parametrze fileInfo nie wpływa na nazwę wpisu.

Jeśli plik jest otwarty natychmiast z parametrem openImmediately, zostaje zablokowany do momentu zapisania archiwum.

Wyjątki

UnauthorizedAccessException

fileInfo jest tylko do odczytu lub jest katalogiem.

DirectoryNotFoundException

Określona ścieżka jest nieprawidłowa, na przykład znajduje się na nieprzypisanym dysku.

IOException

Plik jest już otwarty.

CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)

Tworzy pojedynczy wpis w archiwum.

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

Parametry

name string

Nazwa wpisu.

source Stream

Strumień wejściowy dla wpisu.

newEntrySettings ArchiveEntrySettings

Ustawienia kompresji i szyfrowania używane dla dodanego elementu Aspose.Zip.ArchiveEntry.

fileInfo FileSystemInfo

Metadane pliku lub folderu do skompresowania.

Zwraca

ArchiveEntry

Instancja wpisu zip.

Przykłady

Tworzenie archiwum z szyfrowanym wpisem.

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

Uwagi

Nazwa wpisu jest ustawiana wyłącznie w parametrze name. Nazwa pliku podana w parametrze fileInfo nie wpływa na nazwę wpisu.

fileInfo może odnosić się do System.IO.DirectoryInfo, jeśli wpis jest katalogiem.

Wyjątki

InvalidOperationException

Zarówno source, jak i fileInfo są null lub source jest null, a fileInfo odnosi się do katalogu.

CreateEntry(string, Func<stream>, ArchiveEntrySettings)

Tworzy pojedynczy wpis w archiwum.

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

Parametry

name string

Nazwa wpisu.

streamProvider Func<Stream&gt;

Metoda dostarczająca strumień wejściowy dla wpisu.

newEntrySettings ArchiveEntrySettings

Ustawienia kompresji i szyfrowania używane dla dodanego elementu Aspose.Zip.ArchiveEntry.

Zwraca

ArchiveEntry

Instancja wpisu zip.

Przykłady

Tworzenie archiwum z szyfrowanym wpisem.

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

Uwagi

Ta metoda jest przeznaczona dla .NET Framework 4.0 i nowszych oraz dla wersji .NET Standard 2.0.

DeleteEntry(ArchiveEntry)

Usuwa pierwsze wystąpienie konkretnego wpisu z listy wpisów.

public Archive DeleteEntry(ArchiveEntry entry)

Parametry

entry ArchiveEntry

Wpis do usunięcia z listy wpisów.

Zwraca

Archive

Archiwum z usuniętym wpisem.

Przykłady

Oto jak możesz usunąć wszystkie wpisy oprócz ostatniego:

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

Wyjątki

ObjectDisposedException

Archiwum zostało usunięte.

DeleteEntry(int)

Usuwa wpis z listy wpisów według indeksu.

public Archive DeleteEntry(int entryIndex)

Parametry

entryIndex int

Indeks zerowy wpisu do usunięcia.

Zwraca

Archive

Archiwum z usuniętym wpisem.

Przykłady

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

Wyjątki

ObjectDisposedException

Archiwum zostało usunięte.

ArgumentOutOfRangeException

entryIndex jest mniejszy niż 0 lub entryIndex jest równy lub większy niż liczba Entries.

Dispose()

Wykonuje zadania zdefiniowane przez aplikację związane z zwalnianiem, uwalnianiem lub resetowaniem niezarządzanych zasobów.

public void Dispose()

Dispose(bool)

Wykonuje zadania zdefiniowane przez aplikację związane z zwalnianiem, uwalnianiem lub resetowaniem niezarządzanych zasobów.

protected virtual void Dispose(bool disposing)

Parametry

disposing bool

Określa, czy zarządzane zasoby powinny być usunięte.

ExtractToDirectory(string)

Wyodrębnia wszystkie pliki w archiwum do podanego katalogu.

public void ExtractToDirectory(string destinationDirectory)

Parametry

destinationDirectory string

Ścieżka do katalogu, w którym mają zostać umieszczone wyodrębnione pliki.

Przykłady

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

Uwagi

Jeśli katalog nie istnieje, zostanie utworzony.

Wyjątki

ArgumentNullException

destinationDirectory jest null.

PathTooLongException

Określona ścieżka, nazwa pliku lub obie przekraczają maksymalną długość określoną przez system. Na przykład na platformach opartych na Windows, ścieżki muszą mieć mniej niż 248 znaków, a nazwy plików muszą mieć mniej niż 260 znaków.

SecurityException

Wywołujący nie ma wymaganych uprawnień do dostępu do istniejącego katalogu.

NotSupportedException

Jeśli katalog nie istnieje, ścieżka zawiera znak dwukropka (:) niebędący częścią etykiety dysku (“C:").

ArgumentException

destinationDirectory jest ciągiem o zerowej długości, zawiera tylko białe znaki lub zawiera jeden lub więcej nieprawidłowych znaków. Możesz zapytać o nieprawidłowe znaki, używając metody System.IO.Path.GetInvalidPathChars. -lub- ścieżka jest poprzedzona lub zawiera tylko znak dwukropka (:).

IOException

Katalog określony przez ścieżkę jest plikiem. -lub- Nazwa sieci nie jest znana.

InvalidDataException

Podano niewłaściwe hasło. - lub - Archiwum jest uszkodzone.

Save(Stream, ArchiveSaveOptions)

Zapisuje archiwum do podanego strumienia.

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

Parametry

outputStream Stream

Strumień docelowy.

saveOptions ArchiveSaveOptions

Opcje zapisywania archiwum.

Przykłady

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

Uwagi

outputStream musi być zapisywalny.

Wyjątki

ArgumentException

outputStream nie jest zapisywalny.

ObjectDisposedException

Archiwum zostało usunięte.

Save(string, ArchiveSaveOptions)

Zapisuje archiwum do podanego pliku docelowego.

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

Parametry

destinationFileName string

Ścieżka archiwum do utworzenia. Jeśli podana nazwa pliku wskazuje na istniejący plik, zostanie on nadpisany.

saveOptions ArchiveSaveOptions

Opcje zapisywania archiwum.

Przykłady

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

Uwagi

Możliwe jest zapisanie archiwum w tej samej ścieżce, z której zostało załadowane. Jednak nie jest to zalecane, ponieważ podejście to wykorzystuje kopiowanie do pliku tymczasowego.

Wyjątki

ArgumentNullException

destinationFileName jest null.

SecurityException

Wywołujący nie ma wymaganych uprawnień do dostępu.

ArgumentException

destinationFileName jest pusty, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki.

UnauthorizedAccessException

Dostęp do pliku destinationFileName jest zabroniony.

PathTooLongException

Określona destinationFileName, nazwa pliku lub obie przekraczają maksymalną długość określoną przez system. Na przykład na platformach opartych na Windows, ścieżki muszą mieć mniej niż 248 znaków, a nazwy plików muszą mieć mniej niż 260 znaków.

NotSupportedException

Plik w destinationFileName zawiera dwukropek (:) w środku ciągu.

FileNotFoundException

Plik nie został znaleziony.

DirectoryNotFoundException

Określona ścieżka jest nieprawidłowa, na przykład znajduje się na nieprzypisanym dysku.

IOException

Plik jest już otwarty.

SaveSplit(string, SplitArchiveSaveOptions)

Zapisuje wielosegmentowe archiwum do podanego katalogu docelowego.

public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)

Parametry

destinationDirectory string

Ścieżka do katalogu, w którym mają zostać utworzone segmenty archiwum.

options SplitArchiveSaveOptions

Opcje zapisywania archiwum, w tym nazwa pliku.

Przykłady

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

Uwagi

Ta metoda tworzy kilka (n) plików filename.z01, filename.z02, ..., filename.z(n-1), filename.zip.

Nie można przekształcić istniejącego archiwum w wielosegmentowe.

Wyjątki

InvalidOperationException

To archiwum zostało otwarte z istniejącego źródła.

NotSupportedException

To archiwum jest zarówno skompresowane metodą XZ, jak i szyfrowane.

ArgumentNullException

destinationDirectory jest null.

SecurityException

Wywołujący nie ma wymaganych uprawnień do dostępu do katalogu.

ArgumentException

destinationDirectory zawiera nieprawidłowe znaki, takie jak “, >, < lub |.

PathTooLongException

Określona ścieżka przekracza maksymalną długość określoną przez system.

ObjectDisposedException

Archiwum zostało usunięte.

 Polski