Class SevenZipArchive

Class SevenZipArchive

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

Ta klasa reprezentuje plik archiwum 7z. Użyj jej do tworzenia i wyodrębniania archiwów 7z.

public class SevenZipArchive : IArchive, IDisposable

Dziedziczenie

objectSevenZipArchive

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

SevenZipArchive(SevenZipEntrySettings)

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

public SevenZipArchive(SevenZipEntrySettings newEntrySettings = null)

Parametry

newEntrySettings SevenZipEntrySettings

Ustawienia kompresji i szyfrowania używane dla nowo dodanych elementów Aspose.Zip.SevenZip.SevenZipArchiveEntry.
Jeśli nie określono, używana będzie kompresja LZMA bez szyfrowania.

Przykłady

Poniższy przykład pokazuje, jak skompresować pojedynczy plik z domyślnymi ustawieniami: kompresja LZMA bez szyfrowania.

using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
    using (var archive = new SevenZipArchive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(sevenZipFile);
    }
}

SevenZipArchive(Stream, string)

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

public SevenZipArchive(Stream sourceStream, string password = null)

Parametry

sourceStream Stream

Źródło archiwum.

password string

Opcjonalne hasło do deszyfrowania. Jeśli nazwy plików są szyfrowane, musi być obecne.

Przykłady

using (SevenZipArchive archive = new SevenZipArchive(File.OpenRead("archive.7z")))
{
    archive.ExtractToDirectory("C:\\extracted");
}

Uwagi

Ten konstruktor nie dekompresuje żadnego wpisu. Zobacz metodę Aspose.Zip.SevenZip.SevenZipArchive.ExtractToDirectory(System.String,System.String) w celu dekompresji.

Wyjątki

ArgumentException

sourceStream nie jest możliwy do przeszukiwania.

ArgumentNullException

sourceStream jest null.

NotImplementedException

Archiwum zawiera więcej niż jednego kodera. Obecnie obsługiwana jest tylko kompresja LZMA.

SevenZipArchive(string, string)

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

public SevenZipArchive(string path, string password = null)

Parametry

path string

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

password string

Opcjonalne hasło do deszyfrowania. Jeśli nazwy plików są szyfrowane, musi być obecne.

Przykłady

using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
{
    archive.ExtractToDirectory("C:\\extracted");
}

Uwagi

Ten konstruktor nie dekompresuje żadnego wpisu. Zobacz metodę Aspose.Zip.SevenZip.SevenZipArchive.ExtractToDirectory(System.String,System.String) w celu 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 oba przekraczają maksymalną długość zdefiniowaną 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.

SevenZipArchive(string[], string)

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

public SevenZipArchive(string[] parts, string password = null)

Parametry

parts string[]

Ścieżki do każdego segmentu wielonotowego archiwum 7z w odpowiedniej kolejności.

password string

Opcjonalne hasło do deszyfrowania. Jeśli nazwy plików są szyfrowane, musi być obecne.

Przykłady

using (SevenZipArchive archive = new SevenZipArchive(new string[] { "multi.7z.001", "multi.7z.002", "multi.7z.003" }))
{
    archive.ExtractToDirectory("C:\\extracted");
}

Wyjątki

ArgumentNullException

parts jest null.

ArgumentException

parts nie ma wpisów.

SecurityException

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

ArgumentException

Ścieżka do pliku jest pusta, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki.

UnauthorizedAccessException

Dostęp do pliku jest zabroniony.

PathTooLongException

Określona ścieżka do części, nazwa pliku lub oba przekraczają maksymalną długość zdefiniowaną 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 ścieżce zawiera dwukropek (:) w środku ciągu.

Właściwości

Entries

Zwraca wpisy typu Aspose.Zip.SevenZip.SevenZipArchiveEntry stanowiące archiwum.

public ReadOnlyCollection<sevenziparchiveentry> Entries { get; }

Wartość właściwości

ReadOnlyCollection<SevenZipArchiveEntry&gt;

NewEntrySettings

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

public SevenZipEntrySettings NewEntrySettings { get; }

Wartość właściwości

SevenZipEntrySettings

Metody

CreateEntries(DirectoryInfo, bool)

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

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

Parametry

directory DirectoryInfo

Katalog do skompresowania.

includeRootDirectory bool

Określa, czy uwzględnić sam katalog główny.

Zwraca

SevenZipArchive

Archiwum z utworzonymi wpisami.

Przykłady

using (SevenZipArchive archive = new SevenZipArchive())
{
    DirectoryInfo folder = new DirectoryInfo("C:\folder");
    archive.CreateEntries(folder);
    archive.Save("folder.7z");
}

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 SevenZipArchive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)

Parametry

sourceDirectory string

Katalog do skompresowania.

includeRootDirectory bool

Określa, czy uwzględnić sam katalog główny.

Zwraca

SevenZipArchive

Archiwum z utworzonymi wpisami.

Przykłady

Utwórz archiwum 7z z kompresją LZMA2.

using (SevenZipArchive archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMACompressionSettings())))
{
    archive.CreateEntries("C:\folder");
    archive.Save("folder.7z");
}

CreateEntry(string, FileInfo, bool, SevenZipEntrySettings)

Tworzy pojedynczy wpis w archiwum.

public SevenZipArchiveEntry CreateEntry(string name, FileInfo fileInfo, bool openImmediately = false, SevenZipEntrySettings newEntrySettings = null)

Parametry

name string

Nazwa wpisu.

fileInfo FileInfo

Metadane pliku do skompresowania.

openImmediately bool

True, jeśli otworzyć plik natychmiast, w przeciwnym razie otworzyć plik przy zapisywaniu archiwum.

newEntrySettings SevenZipEntrySettings

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

Zwraca

SevenZipArchiveEntry

Instancja wpisu Seven Zip.

Przykłady

Utwórz archiwum z wpisami szyfrowanymi różnymi hasłami.

using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
    FileInfo fi1 = new FileInfo("data1.bin");
    FileInfo fi2 = new FileInfo("data2.bin");
    FileInfo fi3 = new FileInfo("data3.bin");
    using (var archive = new SevenZipArchive())
    {
        archive.CreateEntry("entry1.bin", fi1, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test1")));
        archive.CreateEntry("entry2.bin", fi2, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test2")));
        archive.CreateEntry("entry3.bin", fi3, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test3")));
        archive.Save(sevenZipFile);
    }
}

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 otwierany 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, SevenZipEntrySettings, FileSystemInfo)

Tworzy pojedynczy wpis w archiwum.

public SevenZipArchiveEntry CreateEntry(string name, Stream source, SevenZipEntrySettings newEntrySettings, FileSystemInfo fileInfo)

Parametry

name string

Nazwa wpisu.

source Stream

Strumień wejściowy dla wpisu.

newEntrySettings SevenZipEntrySettings

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

fileInfo FileSystemInfo

Metadane pliku lub folderu do skompresowania.

Zwraca

SevenZipArchiveEntry

Instancja wpisu SevenZip.

Przykłady

Utwórz archiwum z wpisem skompresowanym z użyciem LZMA2 i szyfrowanym.

using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
    using (var archive = new SevenZipArchive())
    {
        archive.CreateEntry("entry1.bin", new MemoryStream(new byte[] {0x00, 0xFF}), new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("test1")), new FileInfo("data1.bin")); 
        archive.Save(sevenZipFile);
    }
}

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 wpisem jest katalog.

Wyjątki

InvalidOperationException

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

CreateEntry(string, Stream, SevenZipEntrySettings)

Tworzy pojedynczy wpis w archiwum.

public SevenZipArchiveEntry CreateEntry(string name, Stream source, SevenZipEntrySettings newEntrySettings = null)

Parametry

name string

Nazwa wpisu.

source Stream

Strumień wejściowy dla wpisu.

newEntrySettings SevenZipEntrySettings

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

Zwraca

SevenZipArchiveEntry

Instancja wpisu Zip.

Przykłady

Utwórz archiwum 7z z kompresją LZMA2 i szyfrowaniem wszystkich wpisów.

using (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("p@s$"))))
{
    archive.CreateEntry("data.bin", new MemoryStream(new byte[] {0x00, 0xFF} ));
    archive.Save("archive.7z");
}

CreateEntry(string, string, bool, SevenZipEntrySettings)

Tworzy pojedynczy wpis w archiwum.

public SevenZipArchiveEntry CreateEntry(string name, string path, bool openImmediately = false, SevenZipEntrySettings newEntrySettings = null)

Parametry

name string

Nazwa wpisu.

path string

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

openImmediately bool

True, jeśli otworzyć plik natychmiast, w przeciwnym razie otworzyć plik przy zapisywaniu archiwum.

newEntrySettings SevenZipEntrySettings

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

Zwraca

SevenZipArchiveEntry

Instancja wpisu Zip.

Przykłady

using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
    using (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings())))
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(sevenZipFile);
    }
}

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 otwierany 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 oba przekraczają maksymalną długość zdefiniowaną 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.

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 zasoby zarządzane powinny zostać zwolnione.

ExtractToDirectory(string, string)

Wyodrębnia wszystkie pliki w archiwum do podanego katalogu.

public void ExtractToDirectory(string destinationDirectory, string password = null)

Parametry

destinationDirectory string

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

password string

Opcjonalne hasło do deszyfrowania zawartości.

Przykłady

using (var archive = new SevenZipArchive("archive.7z")) 
{ 
   archive.ExtractToDirectory("C:\extracted");
}

Uwagi

Jeśli katalog nie istnieje, zostanie utworzony.

password jest używane tylko do deszyfrowania zawartości. Jeśli nazwy plików są szyfrowane, należy podać hasło w konstruktorze Aspose.Zip.SevenZip.SevenZipArchive.#ctor(System.String,System.String) lub Aspose.Zip.SevenZip.SevenZipArchive.#ctor(System.IO.Stream,System.String).

Wyjątki

ArgumentNullException

destinationDirectory jest null.

PathTooLongException

Określona ścieżka, nazwa pliku lub oba przekraczają maksymalną długość zdefiniowaną 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 (:) który nie jest 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 prefiksowana lub zawiera tylko znak dwukropka (:).

IOException

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

InvalidDataException

Archiwum jest uszkodzone.

Save(Stream)

Zapisuje archiwum 7z do podanego strumienia.

public void Save(Stream output)

Parametry

output Stream

Strumień docelowy.

Przykłady

using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
  using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
  {
    using (var archive = new SevenZipArchive())
    {
      archive.CreateEntry("data", source);
      archive.Save(sevenZipFile);
    }
  }
}

Uwagi

output musi być możliwy do przeszukiwania.

Wyjątki

ArgumentException

output nie obsługuje przeszukiwania.

ArgumentNullException

output jest null.

InvalidOperationException

Kodowanie nie powiodło się w kompresji danych.

Save(string)

Zapisuje archiwum do podanego pliku docelowego.

public void Save(string destinationFileName)

Parametry

destinationFileName string

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

Przykłady

using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
{
   using (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMACompressionSettings())))
   {
      archive.CreateEntry("data", source);
      archive.Save("archive.7z");
   }
}

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 oba przekraczają maksymalną długość zdefiniowaną 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.

SaveSplit(string, SplitSevenZipArchiveSaveOptions)

Zapisuje wielonotowe archiwum do podanego katalogu docelowego.

public void SaveSplit(string destinationDirectory, SplitSevenZipArchiveSaveOptions options)

Parametry

destinationDirectory string

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

options SplitSevenZipArchiveSaveOptions

Opcje zapisywania archiwum, w tym nazwa pliku.

Przykłady

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

Uwagi

Ta metoda tworzy kilka (n) plików filename.7z.001, filename.7z.002, ..., filename.7z.(n).

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

Wyjątki

InvalidOperationException

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

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ść zdefiniowaną przez system.

 Polski