Class Archive

Class Archive

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

Цей клас представляє файл zip-архіву. Використовуйте його для створення, витягування або оновлення zip-архівів.

public class Archive : IArchive, IDisposable

Спадкування

objectArchive

Реалізує

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) для розпакування.

Виключення

ArgumentException

sourceStream не є доступним для пошуку.

InvalidDataException

Заголовок шифрування для 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) для розпакування.

Виключення

ArgumentNullException

path є null.

SecurityException

Викликач не має необхідного дозволу для доступу.

ArgumentException

path є порожнім, містить лише пробіли або містить недійсні символи.

UnauthorizedAccessException

Доступ до файлу path заборонений.

PathTooLongException

Вказаний path, ім’я файлу або обидва перевищують максимальну довжину, визначену системою. Наприклад, на платформах Windows шляхи повинні бути менше 248 символів, а імена файлів повинні бути менше 260 символів.

NotSupportedException

Файл за path містить двокрапку (:) у середині рядка.

FileNotFoundException

Файл не знайдено.

DirectoryNotFoundException

Вказаний шлях недійсний, наприклад, перебуває на не змонтованому диску.

IOException

Файл вже відкритий.

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

Виключення

EndOfStreamException

Не вдалося завантажити заголовки ZIP, оскільки надані файли пошкоджені.

Властивості

Entries

Отримує елементи типу Aspose.Zip.ArchiveEntry, що складають архів.

public ReadOnlyCollection<archiveentry> Entries { get; }

Значення властивості

ReadOnlyCollection<ArchiveEntry&gt;

NewEntrySettings

Налаштування стиснення та шифрування, що використовуються для нових елементів Aspose.Zip.ArchiveEntry.

public ArchiveEntrySettings NewEntrySettings { get; }

Значення властивості

ArchiveEntrySettings

Методи

CreateEntries(DirectoryInfo, bool)

Додає до архіву всі файли та каталоги рекурсивно в заданому каталозі.

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

Параметри

directory DirectoryInfo

Каталог для стиснення.

includeRootDirectory bool

Вказує, чи слід включати кореневий каталог.

Повертає

Archive

Архів з сформованими елементами.

Приклади

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

Виключення

DirectoryNotFoundException

Шлях до directory недійсний, наприклад, перебуває на не змонтованому диску.

SecurityException

Викликач не має необхідного дозволу для доступу до directory.

CreateEntries(string, bool)

Додає до архіву всі файли та каталоги рекурсивно в заданому каталозі.

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

Параметри

sourceDirectory string

Каталог для стиснення.

includeRootDirectory bool

Вказує, чи слід включати кореневий каталог.

Повертає

Archive

Архів з сформованими елементами.

Приклади

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.

Повертає

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, він буде заблокований до збереження архіву.

Виключення

ArgumentNullException

path є null.

SecurityException

Викликач не має необхідного дозволу для доступу.

ArgumentException

path є порожнім, містить лише пробіли або містить недійсні символи.

UnauthorizedAccessException

Доступ до файлу path заборонений.

PathTooLongException

Вказаний path, ім’я файлу або обидва перевищують максимальну довжину, визначену системою. Наприклад, на платформах Windows шляхи повинні бути менше 248 символів, а імена файлів повинні бути менше 260 символів.

NotSupportedException

Файл за path містить двокрапку (:) у середині рядка.

CreateEntry(string, Stream, ArchiveEntrySettings)

Створює один елемент в архіві.

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

Параметри

name string

Ім’я елемента.

source Stream

Вхідний потік для елемента.

newEntrySettings ArchiveEntrySettings

Налаштування стиснення та шифрування, що використовуються для доданого елемента Aspose.Zip.ArchiveEntry.

Повертає

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.

Повертає

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, він буде заблокований до збереження архіву.

Виключення

UnauthorizedAccessException

fileInfo є тільки для читання або є каталогом.

DirectoryNotFoundException

Вказаний шлях недійсний, наприклад, перебуває на не змонтованому диску.

IOException

Файл вже відкритий.

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

Метадані файлу або папки, що підлягає стисненню.

Повертає

ArchiveEntry

Екземпляр 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, якщо елемент є каталогом.

Виключення

InvalidOperationException

Обидва 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&gt;

Метод, що надає вхідний потік для елемента.

newEntrySettings ArchiveEntrySettings

Налаштування стиснення та шифрування, що використовуються для доданого елемента Aspose.Zip.ArchiveEntry.

Повертає

ArchiveEntry

Екземпляр zip-елемента.

Приклади

Сформуйте архів з зашифрованим елементом.

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

Зауваження

Цей метод призначений для .NET Framework 4.0 і вище, а також для версії .NET Standard 2.0.

DeleteEntry(ArchiveEntry)

Видаляє перше входження конкретного елемента зі списку елементів.

public Archive DeleteEntry(ArchiveEntry entry)

Параметри

entry ArchiveEntry

Елемент для видалення зі списку елементів.

Повертає

Archive

Архів з видаленим елементом.

Приклади

Ось як ви можете видалити всі елементи, крім останнього:

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

Виключення

ObjectDisposedException

Архів закритий.

DeleteEntry(int)

Видаляє елемент зі списку елементів за індексом.

public Archive DeleteEntry(int entryIndex)

Параметри

entryIndex int

Нульовий індекс елемента для видалення.

Повертає

Archive

Архів з видаленим елементом.

Приклади

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

Виключення

ObjectDisposedException

Архів закритий.

ArgumentOutOfRangeException

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

Зауваження

Якщо каталог не існує, він буде створений.

Виключення

ArgumentNullException

destinationDirectory є null.

PathTooLongException

Вказаний шлях, ім’я файлу або обидва перевищують максимальну довжину, визначену системою. Наприклад, на платформах Windows шляхи повинні бути менше 248 символів, а імена файлів повинні бути менше 260 символів.

SecurityException

Викликач не має необхідного дозволу для доступу до існуючого каталогу.

NotSupportedException

Якщо каталог не існує, шлях містить символ двокрапки (:) який не є частиною мітки диска (“C:").

ArgumentException

destinationDirectory є рядком нульової довжини, містить лише пробіли або містить один або кілька недійсних символів. Ви можете запитати недійсні символи, використовуючи метод System.IO.Path.GetInvalidPathChars. -або- шлях починається з символу двокрапки (:).

IOException

Каталог, вказаний шляхом, є файлом. -або- Ім’я мережі невідоме.

InvalidDataException

Неправильний пароль був наданий. - або - Архів пошкоджений.

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 повинен бути записуваним.

Виключення

ArgumentException

outputStream не є записуваним.

ObjectDisposedException

Архів закритий.

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

Зауваження

Можливо зберегти архів за тим же шляхом, з якого він був завантажений. Однак це не рекомендується, оскільки цей підхід використовує копіювання у тимчасовий файл.

Виключення

ArgumentNullException

destinationFileName є null.

SecurityException

Викликач не має необхідного дозволу для доступу.

ArgumentException

destinationFileName є порожнім, містить лише пробіли або містить недійсні символи.

UnauthorizedAccessException

Доступ до файлу destinationFileName заборонений.

PathTooLongException

Вказаний destinationFileName, ім’я файлу або обидва перевищують максимальну довжину, визначену системою. Наприклад, на платформах Windows шляхи повинні бути менше 248 символів, а імена файлів повинні бути менше 260 символів.

NotSupportedException

Файл за destinationFileName містить двокрапку (:) у середині рядка.

FileNotFoundException

Файл не знайдено.

DirectoryNotFoundException

Вказаний шлях недійсний, наприклад, перебуває на не змонтованому диску.

IOException

Файл вже відкритий.

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.

Не можна перетворити існуючий архів на багатотомний.

Виключення

InvalidOperationException

Цей архів був відкритий з існуючого джерела.

NotSupportedException

Цей архів одночасно стиснутий методом XZ і зашифрований.

ArgumentNullException

destinationDirectory є null.

SecurityException

Викликач не має необхідного дозволу для доступу до каталогу.

ArgumentException

destinationDirectory містить недійсні символи, такі як “, >, <, або |.

PathTooLongException

Вказаний шлях перевищує максимальну довжину, визначену системою.

ObjectDisposedException

Архів закритий.

 Українська