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
Implementuje
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
sourceStream
nie jest możliwy do przeszukiwania.
sourceStream
jest null.
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
path
jest null.
Wywołujący nie ma wymaganych uprawnień do dostępu.
path
jest pusty, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki.
Dostęp do pliku path
jest zabroniony.
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.
Plik w path
zawiera dwukropek (:) w środku ciągu.
Plik nie został znaleziony.
Określona ścieżka jest nieprawidłowa, na przykład znajduje się na nieprzypisanym dysku.
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
parts
jest null.
parts
nie ma wpisów.
Wywołujący nie ma wymaganych uprawnień do dostępu.
Ścieżka do pliku jest pusta, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki.
Dostęp do pliku jest zabroniony.
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.
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>
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
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
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
Ścieżka do directory
jest nieprawidłowa, na przykład znajduje się na nieprzypisanym dysku.
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
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
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
fileInfo
jest tylko do odczytu lub jest katalogiem.
Określona ścieżka jest nieprawidłowa, na przykład znajduje się na nieprzypisanym dysku.
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
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
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
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
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
path
jest null.
Wywołujący nie ma wymaganych uprawnień do dostępu.
path
jest pusty, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki.
Dostęp do pliku path
jest zabroniony.
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.
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
destinationDirectory
jest null.
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.
Wywołujący nie ma wymaganych uprawnień do dostępu do istniejącego katalogu.
Jeśli katalog nie istnieje, ścieżka zawiera znak dwukropka (:) który nie jest częścią etykiety dysku (“C:").
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 (:).
Katalog określony przez ścieżkę jest plikiem. -lub- Nazwa sieci nie jest znana.
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
output
nie obsługuje przeszukiwania.
output
jest null.
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
destinationFileName
jest null.
Wywołujący nie ma wymaganych uprawnień do dostępu.
destinationFileName
jest pusty, zawiera tylko białe znaki lub zawiera nieprawidłowe znaki.
Dostęp do pliku destinationFileName
jest zabroniony.
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.
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
To archiwum zostało otwarte z istniejącego źródła.
destinationDirectory
jest null.
Wywołujący nie ma wymaganych uprawnień do dostępu do katalogu.
destinationDirectory
zawiera nieprawidłowe znaki, takie jak “, >, < lub |.
Określona ścieżka przekracza maksymalną długość zdefiniowaną przez system.