Class Archive

Class Archive

Название пространства: Aspose.Zip Ассоциация: Aspose.Zip.dll (25.5.0)

Этот класс представляет собой файл архива zip. Используйте его для составления, экстракции или обновления архивов zip .

public class Archive : IArchive, IDisposable

Inheritance

object Archive

Implements

IArchive , IDisposable

Наследованные члены

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

Constructors

Archive(ArchiveEntrySettings)

Инициализует новую инстанцию класса Aspose.Zip.Archive с опциональными настройками для его входов.

public Archive(ArchiveEntrySettings newEntrySettings = null)

Parameters

newEntrySettings ArchiveEntrySettings

Настройки компрессии и шифрования, используемые для новое добавление элементов Aspose.Zip.ArchiveEntry.Если не указано, наиболее распространенная дефлатная компрессия без шифрования будет использована.

Examples

Следующий пример показывает, как компрессировать единый файл по умолчанию.

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

Archive(Поток, ArchiveLoadOptions, ArchiveEntrySettings)

Инициализует новую инстанцию класса Aspose.Zip.Archive и составляет входный список, который можно извлечь из архива.

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

Parameters

sourceStream Stream

Источник этого архива.

loadOptions ArchiveLoadOptions

Возможность загрузки существующих архивов.

newEntrySettings ArchiveEntrySettings

Настройки компрессии и шифрования, используемые для новое добавление элементов Aspose.Zip.ArchiveEntry.Если не указано, наиболее распространенная дефлатная компрессия без шифрования будет использована.

Examples

Следующий пример выводит зашифрованный архив, затем декомпрессирует первый вход в .

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

Remarks

Этот конструктор не декомпрессирует любые входы. см. Метод декомпрессии Aspose.Zip.ArchiveEntry.Open(System.String).

Exceptions

ArgumentException

sourceStream’ is not seekable.

InvalidDataException

Название шифрования для AES противоречит методу компрессии WinZip.

Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)

Инициализует новую инстанцию класса Aspose.Zip.Archive и составляет входный список, который можно извлечь из архива.

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

Parameters

path string

Полностью квалифицированный или относительный путь к архиву.

loadOptions ArchiveLoadOptions

Возможность загрузки существующих архивов.

newEntrySettings ArchiveEntrySettings

Настройки компрессии и шифрования, используемые для новое добавление элементов Aspose.Zip.ArchiveEntry.Если не указано, наиболее распространенная дефлатная компрессия без шифрования будет использована.

Examples

Следующий пример выводит зашифрованный архив, затем декомпрессирует первый вход в .

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

Remarks

Этот конструктор не декомпрессирует любые входы. см. Метод декомпрессии Aspose.Zip.ArchiveEntry.Open(System.String).

Exceptions

ArgumentNullException

path’ is null.

SecurityException

Заказчик не имеет требуемого разрешения на доступ.

ArgumentException

path" пустая, содержит только белые пространства или содержит недействительные символы.

UnauthorizedAccessException

Доступ к файлу path" отказывается.

PathTooLongException

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

NotSupportedException

Файл в path’ содержит колону (:) в середине строки.

FileNotFoundException

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

DirectoryNotFoundException

Указанный маршрут является недействительным, например, находиться на немапированном диске.

IOException

Файл уже открыт.

InvalidDataException

Данный файл коррумпирован.

Archive(Стринг, Стринг[ ], ArchiveLoadOptions)

Инициализует новую инстанцию класса Aspose.Zip.Archive из мульти-волнового архива zip и сочетает в себе входный список, который можно извлечь из архива.

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

Parameters

mainSegment string

Путь в последний сегмент мульти-обменного архива с центральным каталогом.

Обычно этот сегмент имеет *.zip расширение и меньше, чем другие.

segmentsInOrder string [ ]

Путешествия к каждому сегменту, но последний мульти-объем zip архива соблюдает порядок.

Обычно они называли filename.z01, filename.z02, …, filename.z(n-1).

loadOptions ArchiveLoadOptions

Возможность загрузки существующих архивов.

Examples

Этот шаблон выводит в каталог архив из трех сегментов.

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

Exceptions

EndOfStreamException

Нельзя загружать заголовки ZIP, потому что предоставленные файлы коррумпированы.

Properties

Entries

Получается вход типа Aspose.Zip.ArchiveEntry, составляющий архив.

public ReadOnlyCollection<archiveentry> Entries { get; }

Стоимость недвижимости

ReadOnlyCollection • < ArchiveEntry >

NewEntrySettings

Настройки компрессии и шифрования, используемые для новое добавление элементов Aspose.Zip.ArchiveEntry.

public ArchiveEntrySettings NewEntrySettings { get; }

Стоимость недвижимости

ArchiveEntrySettings

Methods

CreateEntries(Дистрибьютор, Bool)

Добавьте в архив все файлы и каталоги повторно в указанном каталоге.

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

Parameters

directory DirectoryInfo

Директор для компресса.

includeRootDirectory bool

Он указывает, включать ли корневую директорию сама или нет.

Returns

Archive

Архив с составленными входами.

Examples

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

Exceptions

DirectoryNotFoundException

Путь в directory" не действует, например, на непамятном диске.

SecurityException

Вызовчик не имеет требуемого разрешения на доступ к directory".

CreateEntries(Стриг, Боол)

Добавьте в архив все файлы и каталоги повторно в указанном каталоге.

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

Parameters

sourceDirectory string

Директор для компресса.

includeRootDirectory bool

Он указывает, включать ли корневую директорию сама или нет.

Returns

Archive

Архив с составленными входами.

Examples

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)

Parameters

name string

Название входа.

path string

Полностью квалифицированное имя нового файла или относительное имя файла, которое должно быть компрессировано.

openImmediately bool

Правда, если открыть файл сразу, то в противном случае открыть файл на архиве.

newEntrySettings ArchiveEntrySettings

Настройки компрессии и шифрования используются для добавления элемента Aspose.Zip.ArchiveEntry.

Returns

ArchiveEntry

Входный инстанция ZIP.

Examples

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

Remarks

Название входа устанавливается только в пределах параметра.Название файла, предоставленное в параметре, не влияет на имя входа.

Если файл открывается сразу с параметром, он блокируется до сохранения архива.

Exceptions

ArgumentNullException

path’ is 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)

Parameters

name string

Название входа.

source Stream

Входный поток для входа.

newEntrySettings ArchiveEntrySettings

Настройки компрессии и шифрования используются для добавления элемента Aspose.Zip.ArchiveEntry.

Returns

ArchiveEntry

Входный инстанция ZIP.

Examples

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)

Parameters

name string

Название входа.

fileInfo FileInfo

Метаданные файла должны быть компрессированы.

openImmediately bool

Правда, если открыть файл сразу, то в противном случае открыть файл на архиве.

newEntrySettings ArchiveEntrySettings

Настройки компрессии и шифрования используются для добавления элемента Aspose.Zip.ArchiveEntry.

Returns

ArchiveEntry

Входный инстанция ZIP.

Examples

Составьте архив с входами, зашифрованными различными методами шифрования и паролями каждый.

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

Remarks

Название входа устанавливается только в пределах параметра.Название файла, предоставленное в параметре, не влияет на имя входа.

Если файл открывается сразу с параметром, он блокируется до сохранения архива.

Exceptions

UnauthorizedAccessException

fileInfo’ is read-only or is a directory.

DirectoryNotFoundException

Указанный маршрут является недействительным, например, находиться на немапированном диске.

IOException

Файл уже открыт.

CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)

Создайте единый вход в архиве.

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

Parameters

name string

Название входа.

source Stream

Входный поток для входа.

newEntrySettings ArchiveEntrySettings

Настройки компрессии и шифрования используются для добавления элемента Aspose.Zip.ArchiveEntry.

fileInfo FileSystemInfo

Метаданные файла или папки должны быть компрессированы.

Returns

ArchiveEntry

Входный инстанция ZIP.

Examples

Составьте архив с зашифрованным входом.

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

Remarks

Название входа устанавливается только в пределах параметра.Название файла, предоставленное в параметре, не влияет на имя входа.

можно ссылаться на System.IO.DirectoryInfo, если вход является каталогом.

Exceptions

InvalidOperationException

И source’ и fileInfo’ нуль или source’ нуль и fileInfo’ означает каталог.

CreateEntry(Функция, Func, АрхивEntrySettings)

Создайте единый вход в архиве.

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

Parameters

name string

Название входа.

streamProvider Func • < Stream >

Метод, обеспечивающий входный поток для входа.

newEntrySettings ArchiveEntrySettings

Настройки компрессии и шифрования используются для добавления элемента Aspose.Zip.ArchiveEntry.

Returns

ArchiveEntry

Входный инстанция ZIP.

Examples

Составьте архив с зашифрованным входом.

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

Remarks

Этот метод применяется для .NET Framework 4.0 и выше, а также для .NET Standard 2.0 версии.

DeleteEntry(ArchiveEntry)

Удаляется первое появление конкретного входа из списка входов.

public Archive DeleteEntry(ArchiveEntry entry)

Parameters

entry ArchiveEntry

Вход, который нужно удалить из списка входов.

Returns

Archive

Архив с входом удален.

Examples

Вот как вы можете удалить все записи, за исключением последней:

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

Exceptions

ObjectDisposedException

Архив был распущен.

DeleteEntry(ИНТ)

Удаление входа из списка входа по индексу.

public Archive DeleteEntry(int entryIndex)

Parameters

entryIndex int

Индекс, основанный на нуле, входа должен быть удален.

Returns

Archive

Архив с входом удален.

Examples

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

Exceptions

ObjectDisposedException

Архив был распущен.

ArgumentOutOfRangeException

entryIndex’ is less than 0.-or- entryIndex’ is equal to or greater than ‘Entries’ count.

Dispose()

Осуществляет задания, определенные приложением, связанные с освобождением, освобождением или восстановлением неконтролируемых ресурсов.

public void Dispose()

Dispose(Боол)

Осуществляет задания, определенные приложением, связанные с освобождением, освобождением или восстановлением неконтролируемых ресурсов.

protected virtual void Dispose(bool disposing)

Parameters

disposing bool

Следует ли использовать управляемые ресурсы.

ExtractToDirectory(Стриг)

Выводит все файлы в архиве в предоставленный каталог.

public void ExtractToDirectory(string destinationDirectory)

Parameters

destinationDirectory string

Путь к каталогу для размещения извлеченных файлов.

Examples

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

Remarks

Если каталог не существует, он будет создан.

Exceptions

ArgumentNullException

destinationDirectory’ is null.

PathTooLongException

Например, на платформах, основанных на Windows, маршруты должны быть менее 248 символов, а имена файлов должны быть менее 260 символов.

SecurityException

Заклинатель не имеет требуемого разрешения на доступ к существующему каталогу.

NotSupportedException

Если каталог не существует, то маршрут содержит колонный характер (:) который не является частью дисковой маркировки («C:»).

ArgumentException

destinationDirectory’ is a zero-length string, contains only white space, or contains one or more invalid characters. You can query for invalid characters by using the System.IO.Path.GetInvalidPathChars method.-or- path is prefixed with, or contains, only a colon character (:).

IOException

Каталог, указанный по маршруту, является файлом. -или- Название сети неизвестно.

InvalidDataException

Неправильный пароль был предоставлен. - или - Архив коррумпирован.

Save(Поток, ArchiveSaveOptions)

Сохранить архив в предоставленный поток.

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

Parameters

outputStream Stream

Достопримечательности потока.

saveOptions ArchiveSaveOptions

Опции сохранения архивов.

Examples

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

Remarks

Он должен быть письменным.

Exceptions

ArgumentException

outputStream’ is not writable.

ObjectDisposedException

Архив был распущен.

Save(Архив, ArchiveSaveOptions)

Сохранить архив до предоставленного целевого файла.

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

Parameters

destinationFileName string

Если указанное имя файла указывает на существующий файл, оно будет переписано.

saveOptions ArchiveSaveOptions

Опции сохранения архивов.

Examples

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

Remarks

Можно сохранить архив на тот же путь, с которого он был загружен. однако, это не рекомендуется, потому что этот подход использует копирование в временный файл.

Exceptions

ArgumentNullException

destinationFileName’ is null.

SecurityException

Заказчик не имеет требуемого разрешения на доступ.

ArgumentException

destinationFileName’ является пустым, содержит только белые пространства или содержит недействительные символы.

UnauthorizedAccessException

Доступ к файлу destinationFileName’ отрицается.

PathTooLongException

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

NotSupportedException

Файл в destinationFileName’ содержит колону (:) в середине строки.

FileNotFoundException

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

DirectoryNotFoundException

Указанный маршрут является недействительным, например, находиться на немапированном диске.

IOException

Файл уже открыт.

SaveSplit(Стриг, SplitArchiveSaveOptions)

Сберегает мульти-обменный архив в предоставленный каталог назначений.

public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)

Parameters

destinationDirectory string

Путь к каталогу, где должны быть созданы архивные сегменты.

options SplitArchiveSaveOptions

Опции для хранения архивов, включая имя файла.

Examples

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

Remarks

Этот метод состоит из нескольких () файлов filename.z01, filename.z02, …, filename.z(n-1), filename.zip.

Нельзя создавать существующий архив множественного объема.

Exceptions

InvalidOperationException

Этот архив был открыт из существующего источника.

NotSupportedException

Этот архив компрессируется методом XZ и шифровывается.

ArgumentNullException

destinationDirectory’ is null.

SecurityException

Звонитель не имеет требуемого разрешения на доступ к каталогу.

ArgumentException

destinationDirectory’ contains invalid characters such as “, >, <, or |.

PathTooLongException

Указанный маршрут превышает максимальную длину, установленную системой.

ObjectDisposedException

Архив был распущен.

 Русский