Archive.Archive

Archive(ArchiveEntrySettings)

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

public Archive(ArchiveEntrySettings newEntrySettings = null)
ПараметрТипОписание
newEntrySettingsArchiveEntrySettingsПараметры сжатия и шифрования, используемые для вновь добавленныхArchiveEntry items. Если не указано иное, будет использоваться наиболее распространенное сжатие 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)

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

public Archive(Stream sourceStream, ArchiveLoadOptions loadOptions = null, 
    ArchiveEntrySettings newEntrySettings = null)
ПараметрТипОписание
sourceStreamStreamИсточник архива.
loadOptionsArchiveLoadOptionsОпции для загрузки существующего архива.
newEntrySettingsArchiveEntrySettingsПараметры сжатия и шифрования, используемые для вновь добавленныхArchiveEntry items. Если не указано иное, будет использоваться наиболее распространенное сжатие Deflate без шифрования.

Исключения

исключениеусловие
ArgumentExceptionsourceStream не доступен для поиска.
InvalidDataExceptionЗаголовок шифрования для AES противоречит методу сжатия WinZip.

Примечания

Этот конструктор не распаковывает никакие записи. ВидетьOpen метод распаковки.

Примеры

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

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

Смотрите также


Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)

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

public Archive(string path, ArchiveLoadOptions loadOptions = null, 
    ArchiveEntrySettings newEntrySettings = null)
ПараметрТипОписание
pathStringПолный или относительный путь к файлу архива.
loadOptionsArchiveLoadOptionsОпции для загрузки существующего архива.
newEntrySettingsArchiveEntrySettingsПараметры сжатия и шифрования, используемые для вновь добавленныхArchiveEntry items. Если не указано иное, будет использоваться наиболее распространенное сжатие Deflate без шифрования.

Исключения

исключениеусловие
ArgumentNullExceptionpath нулевой.
SecurityExceptionУ вызывающего абонента нет необходимого разрешения на доступ.
ArgumentExceptionpath пуст, содержит только пробелы или содержит недопустимые символы.
UnauthorizedAccessExceptionДоступ к файлуpath отказано.
PathTooLongExceptionУказанныйpath, имя файла или оба превышают максимальную длину, определенную системой. Например, на платформах Windows пути должны содержать менее 248 символов, а имена файлов — менее 260 символов.
NotSupportedExceptionФайл вpath содержит двоеточие (:) в середине строки.

Примечания

Этот конструктор не распаковывает никакие записи. ВидетьOpen метод распаковки.

Примеры

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

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

Смотрите также