Class Archive
Название пространства: Aspose.Zip Ассоциация: Aspose.Zip.dll (25.5.0)
Этот класс представляет собой файл архива zip. Используйте его для составления, экстракции или обновления архивов zip .
public class Archive : IArchive, IDisposable
Inheritance
Implements
Наследованные члены
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
sourceStream’ is not seekable.
Название шифрования для 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
path’ is null.
Заказчик не имеет требуемого разрешения на доступ.
path" пустая, содержит только белые пространства или содержит недействительные символы.
Доступ к файлу path" отказывается.
Указанный path", имя файла, или оба превышают максимальную длину, установленную системой. Например, на платформах на базе Windows, пути должны быть менее 248 символов, а имена файлов должны быть менее 260 символов.
Файл в path’ содержит колону (:) в середине строки.
Файл не найден.
Указанный маршрут является недействительным, например, находиться на немапированном диске.
Файл уже открыт.
Данный файл коррумпирован.
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
Нельзя загружать заголовки ZIP, потому что предоставленные файлы коррумпированы.
Properties
Entries
Получается вход типа Aspose.Zip.ArchiveEntry, составляющий архив.
public ReadOnlyCollection<archiveentry> Entries { get; }
Стоимость недвижимости
ReadOnlyCollection • < ArchiveEntry >
NewEntrySettings
Настройки компрессии и шифрования, используемые для новое добавление элементов Aspose.Zip.ArchiveEntry.
public ArchiveEntrySettings NewEntrySettings { get; }
Стоимость недвижимости
Methods
CreateEntries(Дистрибьютор, Bool)
Добавьте в архив все файлы и каталоги повторно в указанном каталоге.
public Archive CreateEntries(DirectoryInfo directory, bool includeRootDirectory = true)
Parameters
directory
DirectoryInfo
Директор для компресса.
includeRootDirectory
bool
Он указывает, включать ли корневую директорию сама или нет.
Returns
Архив с составленными входами.
Examples
using (Archive archive = new Archive())
{
DirectoryInfo folder = new DirectoryInfo("C:\folder");
archive.CreateEntries(folder);
archive.Save("folder.zip");
}
Exceptions
Путь в directory" не действует, например, на непамятном диске.
Вызовчик не имеет требуемого разрешения на доступ к directory".
CreateEntries(Стриг, Боол)
Добавьте в архив все файлы и каталоги повторно в указанном каталоге.
public Archive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)
Parameters
sourceDirectory
string
Директор для компресса.
includeRootDirectory
bool
Он указывает, включать ли корневую директорию сама или нет.
Returns
Архив с составленными входами.
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
Входный инстанция 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
path’ is null.
Заказчик не имеет требуемого разрешения на доступ.
path" пустая, содержит только белые пространства или содержит недействительные символы.
Доступ к файлу path" отказывается.
Указанный path", имя файла, или оба превышают максимальную длину, установленную системой. Например, на платформах на базе Windows, пути должны быть менее 248 символов, а имена файлов должны быть менее 260 символов.
Файл в 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
Входный инстанция 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
Входный инстанция 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
fileInfo’ is read-only or is a directory.
Указанный маршрут является недействительным, например, находиться на немапированном диске.
Файл уже открыт.
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
Входный инстанция 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
И 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
Входный инстанция ZIP.
Examples
Составьте архив с зашифрованным входом.
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);
}
}
Remarks
Этот метод применяется для .NET Framework 4.0 и выше, а также для .NET Standard 2.0 версии.
DeleteEntry(ArchiveEntry)
Удаляется первое появление конкретного входа из списка входов.
public Archive DeleteEntry(ArchiveEntry entry)
Parameters
entry
ArchiveEntry
Вход, который нужно удалить из списка входов.
Returns
Архив с входом удален.
Examples
Вот как вы можете удалить все записи, за исключением последней:
using (var archive = new Archive("archive.zip"))
{
while (archive.Entries.Count > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
Exceptions
Архив был распущен.
DeleteEntry(ИНТ)
Удаление входа из списка входа по индексу.
public Archive DeleteEntry(int entryIndex)
Parameters
entryIndex
int
Индекс, основанный на нуле, входа должен быть удален.
Returns
Архив с входом удален.
Examples
using (var archive = new TarArchive("two_files.zip"))
{
archive.DeleteEntry(0);
archive.Save("single_file.zip");
}
Exceptions
Архив был распущен.
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
destinationDirectory’ is null.
Например, на платформах, основанных на Windows, маршруты должны быть менее 248 символов, а имена файлов должны быть менее 260 символов.
Заклинатель не имеет требуемого разрешения на доступ к существующему каталогу.
Если каталог не существует, то маршрут содержит колонный характер (:) который не является частью дисковой маркировки («C:»).
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 (:).
Каталог, указанный по маршруту, является файлом. -или- Название сети неизвестно.
Неправильный пароль был предоставлен. - или - Архив коррумпирован.
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
outputStream’ is not writable.
Архив был распущен.
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
destinationFileName’ is null.
Заказчик не имеет требуемого разрешения на доступ.
destinationFileName’ является пустым, содержит только белые пространства или содержит недействительные символы.
Доступ к файлу destinationFileName’ отрицается.
Определенный destinationFileName’, имя файла, или оба превышают максимальную длину, установленную системой.К примеру, на платформах на базе Windows, маршруты должны быть менее 248 символов, а имена файлов должны быть менее 260 символов.
Файл в destinationFileName’ содержит колону (:) в середине строки.
Файл не найден.
Указанный маршрут является недействительным, например, находиться на немапированном диске.
Файл уже открыт.
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
Этот архив был открыт из существующего источника.
Этот архив компрессируется методом XZ и шифровывается.
destinationDirectory’ is null.
Звонитель не имеет требуемого разрешения на доступ к каталогу.
destinationDirectory’ contains invalid characters such as “, >, <, or |.
Указанный маршрут превышает максимальную длину, установленную системой.
Архив был распущен.