Class Archive
Namespace: Aspose.Zip
Assembly: Aspose.Zip.dll (25.1.0)
Цей клас представляє файл zip-архіву. Використовуйте його для створення, витягування або оновлення zip-архівів.
public class Archive : IArchive, IDisposable
Спадкування
Реалізує
Спадковані члени
object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
Конструктори
Archive(ArchiveEntrySettings)
Ініціалізує новий екземпляр класу Aspose.Zip.Archive з необов’язковими налаштуваннями для його елементів.
public Archive(ArchiveEntrySettings newEntrySettings = null)
Параметри
newEntrySettings
ArchiveEntrySettings
Налаштування стиснення та шифрування, що використовуються для нових елементів Aspose.Zip.ArchiveEntry. Якщо не вказано, буде використано найпоширеніше стиснення Deflate без шифрування.
Приклади
Наступний приклад показує, як стиснути один файл за замовчуванням.
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)
Ініціалізує новий екземпляр класу Aspose.Zip.Archive і формує список елементів, які можуть бути витягнуті з архіву.
public Archive(Stream sourceStream, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)
Параметри
sourceStream
Stream
Джерело архіву.
loadOptions
ArchiveLoadOptions
Опції для завантаження існуючого архіву.
newEntrySettings
ArchiveEntrySettings
Налаштування стиснення та шифрування, що використовуються для нових елементів Aspose.Zip.ArchiveEntry. Якщо не вказано, буде використано найпоширеніше стиснення Deflate без шифрування.
Приклади
Наступний приклад витягує зашифрований архів, а потім розпаковує перший елемент у 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);
}
}
Зауваження
Цей конструктор не розпаковує жодного елемента. Дивіться метод Aspose.Zip.ArchiveEntry.Open(System.String) для розпакування.
Виключення
sourceStream
не є доступним для пошуку.
Заголовок шифрування для AES суперечить методу стиснення WinZip.
Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)
Ініціалізує новий екземпляр класу Aspose.Zip.Archive і формує список елементів, які можуть бути витягнуті з архіву.
public Archive(string path, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)
Параметри
path
string
Повний або відносний шлях до файлу архіву.
loadOptions
ArchiveLoadOptions
Опції для завантаження існуючого архіву.
newEntrySettings
ArchiveEntrySettings
Налаштування стиснення та шифрування, що використовуються для нових елементів Aspose.Zip.ArchiveEntry. Якщо не вказано, буде використано найпоширеніше стиснення Deflate без шифрування.
Приклади
Наступний приклад витягує зашифрований архів, а потім розпаковує перший елемент у 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);
}
}
Зауваження
Цей конструктор не розпаковує жодного елемента. Дивіться метод Aspose.Zip.ArchiveEntry.Open(System.String) для розпакування.
Виключення
path
є null.
Викликач не має необхідного дозволу для доступу.
path
є порожнім, містить лише пробіли або містить недійсні символи.
Доступ до файлу path
заборонений.
Вказаний path
, ім’я файлу або обидва перевищують максимальну довжину, визначену системою. Наприклад, на платформах Windows шляхи повинні бути менше 248 символів, а імена файлів повинні бути менше 260 символів.
Файл за path
містить двокрапку (:) у середині рядка.
Файл не знайдено.
Вказаний шлях недійсний, наприклад, перебуває на не змонтованому диску.
Файл вже відкритий.
Archive(string, string[], ArchiveLoadOptions)
Ініціалізує новий екземпляр класу Aspose.Zip.Archive з багатотомного zip-архіву і формує список елементів, які можуть бути витягнуті з архіву.
public Archive(string mainSegment, string[] segmentsInOrder, ArchiveLoadOptions loadOptions = null)
Параметри
mainSegment
string
Шлях до останнього сегмента багатотомного архіву з центральним каталогом.
Зазвичай цей сегмент має розширення *.zip і менший за інші.
segmentsInOrder
string[]
Шляхи до кожного сегмента, крім останнього, багатотомного zip-архіву в порядку.
Зазвичай вони називаються filename.z01, filename.z02, …, filename.z(n-1).
loadOptions
ArchiveLoadOptions
Опції для завантаження існуючого архіву.
Приклади
Цей зразок витягує архів з трьох сегментів у каталог.
using (Archive a = new Archive("archive.zip", new string[] { "archive.z01", "archive.z02" }))
{
a.ExtractToDirectory("destination");
}
Виключення
Не вдалося завантажити заголовки ZIP, оскільки надані файли пошкоджені.
Властивості
Entries
Отримує елементи типу Aspose.Zip.ArchiveEntry, що складають архів.
public ReadOnlyCollection<archiveentry> Entries { get; }
Значення властивості
ReadOnlyCollection<ArchiveEntry>
NewEntrySettings
Налаштування стиснення та шифрування, що використовуються для нових елементів Aspose.Zip.ArchiveEntry.
public ArchiveEntrySettings NewEntrySettings { get; }
Значення властивості
Методи
CreateEntries(DirectoryInfo, bool)
Додає до архіву всі файли та каталоги рекурсивно в заданому каталозі.
public Archive CreateEntries(DirectoryInfo directory, bool includeRootDirectory = true)
Параметри
directory
DirectoryInfo
Каталог для стиснення.
includeRootDirectory
bool
Вказує, чи слід включати кореневий каталог.
Повертає
Архів з сформованими елементами.
Приклади
using (Archive archive = new Archive())
{
DirectoryInfo folder = new DirectoryInfo("C:\folder");
archive.CreateEntries(folder);
archive.Save("folder.zip");
}
Виключення
Шлях до directory
недійсний, наприклад, перебуває на не змонтованому диску.
Викликач не має необхідного дозволу для доступу до directory
.
CreateEntries(string, bool)
Додає до архіву всі файли та каталоги рекурсивно в заданому каталозі.
public Archive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)
Параметри
sourceDirectory
string
Каталог для стиснення.
includeRootDirectory
bool
Вказує, чи слід включати кореневий каталог.
Повертає
Архів з сформованими елементами.
Приклади
using (Archive archive = new Archive())
{
archive.CreateEntries("C:\folder");
archive.Save("folder.zip");
}
CreateEntry(string, string, bool, ArchiveEntrySettings)
Створює один елемент в архіві.
public ArchiveEntry CreateEntry(string name, string path, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)
Параметри
name
string
Ім’я елемента.
path
string
Повне ім’я нового файлу або відносне ім’я файлу, що підлягає стисненню.
openImmediately
bool
True, якщо файл слід відкрити негайно, інакше файл відкривається під час збереження архіву.
newEntrySettings
ArchiveEntrySettings
Налаштування стиснення та шифрування, що використовуються для доданого елемента Aspose.Zip.ArchiveEntry.
Повертає
Екземпляр zip-елемента.
Приклади
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var archive = new Archive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(zipFile);
}
}
Зауваження
Ім'я елемента встановлюється лише за допомогою параметра name
. Ім'я файлу, надане в параметрі path
, не впливає на ім'я елемента.
Якщо файл відкрито негайно з параметром openImmediately
, він буде заблокований до збереження архіву.
Виключення
path
є null.
Викликач не має необхідного дозволу для доступу.
path
є порожнім, містить лише пробіли або містить недійсні символи.
Доступ до файлу path
заборонений.
Вказаний path
, ім’я файлу або обидва перевищують максимальну довжину, визначену системою. Наприклад, на платформах Windows шляхи повинні бути менше 248 символів, а імена файлів повинні бути менше 260 символів.
Файл за path
містить двокрапку (:) у середині рядка.
CreateEntry(string, Stream, ArchiveEntrySettings)
Створює один елемент в архіві.
public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings = null)
Параметри
name
string
Ім’я елемента.
source
Stream
Вхідний потік для елемента.
newEntrySettings
ArchiveEntrySettings
Налаштування стиснення та шифрування, що використовуються для доданого елемента Aspose.Zip.ArchiveEntry.
Повертає
Екземпляр zip-елемента.
Приклади
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)
Створює один елемент в архіві.
public ArchiveEntry CreateEntry(string name, FileInfo fileInfo, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)
Параметри
name
string
Ім’я елемента.
fileInfo
FileInfo
Метадані файлу, що підлягає стисненню.
openImmediately
bool
True, якщо файл слід відкрити негайно, інакше файл відкривається під час збереження архіву.
newEntrySettings
ArchiveEntrySettings
Налаштування стиснення та шифрування, що використовуються для доданого елемента Aspose.Zip.ArchiveEntry.
Повертає
Екземпляр zip-елемента.
Приклади
Сформуйте архів з елементами, зашифрованими різними методами шифрування та паролями.
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);
}
}
Зауваження
Ім'я елемента встановлюється лише за допомогою параметра name
. Ім'я файлу, надане в параметрі fileInfo
, не впливає на ім'я елемента.
Якщо файл відкрито негайно з параметром openImmediately
, він буде заблокований до збереження архіву.
Виключення
fileInfo
є тільки для читання або є каталогом.
Вказаний шлях недійсний, наприклад, перебуває на не змонтованому диску.
Файл вже відкритий.
CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)
Створює один елемент в архіві.
public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings, FileSystemInfo fileInfo)
Параметри
name
string
Ім’я елемента.
source
Stream
Вхідний потік для елемента.
newEntrySettings
ArchiveEntrySettings
Налаштування стиснення та шифрування, що використовуються для доданого елемента Aspose.Zip.ArchiveEntry.
fileInfo
FileSystemInfo
Метадані файлу або папки, що підлягає стисненню.
Повертає
Екземпляр zip-елемента.
Приклади
Сформуйте архів з зашифрованим елементом.
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);
}
}
Зауваження
Ім'я елемента встановлюється лише за допомогою параметра name
. Ім'я файлу, надане в параметрі fileInfo
, не впливає на ім'я елемента.
fileInfo
може посилатися на System.IO.DirectoryInfo, якщо елемент є каталогом.
Виключення
Обидва source
і fileInfo
є null або source
є null, а fileInfo
є каталогом.
CreateEntry(string, Func<stream>, ArchiveEntrySettings)
Створює один елемент в архіві.
public ArchiveEntry CreateEntry(string name, Func<stream> streamProvider, ArchiveEntrySettings newEntrySettings = null)
Параметри
name
string
Ім’я елемента.
streamProvider
Func<Stream>
Метод, що надає вхідний потік для елемента.
newEntrySettings
ArchiveEntrySettings
Налаштування стиснення та шифрування, що використовуються для доданого елемента Aspose.Zip.ArchiveEntry.
Повертає
Екземпляр zip-елемента.
Приклади
Сформуйте архів з зашифрованим елементом.
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);
}
}
Зауваження
Цей метод призначений для .NET Framework 4.0 і вище, а також для версії .NET Standard 2.0.
DeleteEntry(ArchiveEntry)
Видаляє перше входження конкретного елемента зі списку елементів.
public Archive DeleteEntry(ArchiveEntry entry)
Параметри
entry
ArchiveEntry
Елемент для видалення зі списку елементів.
Повертає
Архів з видаленим елементом.
Приклади
Ось як ви можете видалити всі елементи, крім останнього:
using (var archive = new Archive("archive.zip"))
{
while (archive.Entries.Count > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
Виключення
Архів закритий.
DeleteEntry(int)
Видаляє елемент зі списку елементів за індексом.
public Archive DeleteEntry(int entryIndex)
Параметри
entryIndex
int
Нульовий індекс елемента для видалення.
Повертає
Архів з видаленим елементом.
Приклади
using (var archive = new TarArchive("two_files.zip"))
{
archive.DeleteEntry(0);
archive.Save("single_file.zip");
}
Виключення
Архів закритий.
entryIndex
менше 0.-або- entryIndex
дорівнює або більше кількості Entries
.
Dispose()
Виконує завдання, визначені додатком, пов’язані з вивільненням, скиданням або звільненням неуправлінських ресурсів.
public void Dispose()
Dispose(bool)
Виконує завдання, визначені додатком, пов’язані з вивільненням, скиданням або звільненням неуправлінських ресурсів.
protected virtual void Dispose(bool disposing)
Параметри
disposing
bool
Чи слід вивільнити керовані ресурси.
ExtractToDirectory(string)
Витягує всі файли з архіву в наданий каталог.
public void ExtractToDirectory(string destinationDirectory)
Параметри
destinationDirectory
string
Шлях до каталогу, куди будуть поміщені витягнуті файли.
Приклади
using (var archive = new Archive("archive.zip"))
{
archive.ExtractToDirectory("C:\extracted");
}
Зауваження
Якщо каталог не існує, він буде створений.
Виключення
destinationDirectory
є null.
Вказаний шлях, ім’я файлу або обидва перевищують максимальну довжину, визначену системою. Наприклад, на платформах Windows шляхи повинні бути менше 248 символів, а імена файлів повинні бути менше 260 символів.
Викликач не має необхідного дозволу для доступу до існуючого каталогу.
Якщо каталог не існує, шлях містить символ двокрапки (:) який не є частиною мітки диска (“C:").
destinationDirectory
є рядком нульової довжини, містить лише пробіли або містить один або кілька недійсних символів. Ви можете запитати недійсні символи, використовуючи метод System.IO.Path.GetInvalidPathChars.
-або- шлях починається з символу двокрапки (:).
Каталог, вказаний шляхом, є файлом. -або- Ім’я мережі невідоме.
Неправильний пароль був наданий. - або - Архів пошкоджений.
Save(Stream, ArchiveSaveOptions)
Зберігає архів у наданому потоці.
public void Save(Stream outputStream, ArchiveSaveOptions saveOptions = null)
Параметри
outputStream
Stream
Потік призначення.
saveOptions
ArchiveSaveOptions
Опції для збереження архіву.
Приклади
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var archive = new Archive())
{
archive.CreateEntry("entry.bin", "data.bin");
archive.Save(zipFile);
}
}
Зауваження
outputStream
повинен бути записуваним.
Виключення
outputStream
не є записуваним.
Архів закритий.
Save(string, ArchiveSaveOptions)
Зберігає архів у наданому файлі призначення.
public void Save(string destinationFileName, ArchiveSaveOptions saveOptions = null)
Параметри
destinationFileName
string
Шлях архіву, який потрібно створити. Якщо вказане ім’я файлу вказує на існуючий файл, він буде перезаписаний.
saveOptions
ArchiveSaveOptions
Опції для збереження архіву.
Приклади
using (var archive = new Archive())
{
archive.CreateEntry("entry.bin", "data.bin");
archive.Save("archive.zip", new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
Зауваження
Можливо зберегти архів за тим же шляхом, з якого він був завантажений. Однак це не рекомендується, оскільки цей підхід використовує копіювання у тимчасовий файл.
Виключення
destinationFileName
є null.
Викликач не має необхідного дозволу для доступу.
destinationFileName
є порожнім, містить лише пробіли або містить недійсні символи.
Доступ до файлу destinationFileName
заборонений.
Вказаний destinationFileName
, ім’я файлу або обидва перевищують максимальну довжину, визначену системою.
Наприклад, на платформах Windows шляхи повинні бути менше 248 символів, а імена файлів повинні бути менше 260 символів.
Файл за destinationFileName
містить двокрапку (:) у середині рядка.
Файл не знайдено.
Вказаний шлях недійсний, наприклад, перебуває на не змонтованому диску.
Файл вже відкритий.
SaveSplit(string, SplitArchiveSaveOptions)
Зберігає багатотомний архів у наданому каталозі призначення.
public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)
Параметри
destinationDirectory
string
Шлях до каталогу, де будуть створені сегменти архіву.
options
SplitArchiveSaveOptions
Опції для збереження архіву, включаючи ім’я файлу.
Приклади
using (Archive archive = new Archive())
{
archive.CreateEntry("entry.bin", "data.bin");
archive.SaveSplit(@"C:\Folder", new SplitArchiveSaveOptions("volume", 65536));
}
Зауваження
Цей метод формує кілька (n
) файлів filename.z01, filename.z02, ..., filename.z(n-1), filename.zip.
Не можна перетворити існуючий архів на багатотомний.
Виключення
Цей архів був відкритий з існуючого джерела.
Цей архів одночасно стиснутий методом XZ і зашифрований.
destinationDirectory
є null.
Викликач не має необхідного дозволу для доступу до каталогу.
destinationDirectory
містить недійсні символи, такі як “, >, <, або |.
Вказаний шлях перевищує максимальну довжину, визначену системою.
Архів закритий.