reckfellENGINE

ZipPacker

Запись ZIP по отдельным записям с явным завершением архива.

На этой странице
class ZipPackerReckfellSharpНаследует RefCounted

Создайте собственный ZipPacker, выберите CompressionLevel, проверьте Open, затем для каждой записи StartFile → WriteFile → CloseFile и в конце Close. WriteFile получает байты, не путь к исходному файлу; для текста явно кодируйте UTF-8. Dispose освобождает объект, но явный Close нужен для проверки завершения архива.

Create перезаписывает файл назначения, Addinzip дописывает записи существующего ZIP, Createafter создаёт новый ZIP после содержимого файла. Addinzip не заменяет запись того же имени: возникают дубликаты, а ZipReader читает первое совпадение. Это не транзакционное обновление файла.

Уровень -1 или 0..9 влияет на последующие StartFile и AddDirectory, не уже открытую запись. В текущем коде None=0 всё равно использует ZIP-метод Deflate с уровнем 0, не Store. Значение GetCompressionLevel читателя не восстанавливает настройку: например, 0 и 3 могут сообщаться как категория 6. Производительность и степень сжатия отдельно не измерялись.

AddDirectory пишет запись каталога и метаданные, не копирует дерево файлов с диска. StartFile при необходимости добавляет запись непосредственного родителя, не все уровни. Имена внутри архива используйте относительные с /. Права — метаданные ZIP, не chmod файлов; modifiedTime — UNIX-секунды, 0 означает текущее время. Текущая реализация прибавляет текущий часовой сдвиг хоста, а не исторический сдвиг указанной даты.

Проверены небольшие архивы Windows и совместимость чтения Python. Не подтверждены ZIP64, аварийное восстановление, повреждение/ошибки диска, применение прав при извлечении и работа на других платформах.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

ZipPackerКонструктор
# ZipPacker
C#
public ZipPacker();

Создаёт собственный упаковщик без открытого файла, CompressionLevel=-1. Настройку сжатия можно задать до Open. Записи и архив завершайте с проверкой Error, затем Dispose объект.

Свойства1

CompressionLevelСвойство
# CompressionLevel
C#
public int CompressionLevel { get; set; }

Настройка -1 или 0..9 для следующей открываемой записи; default -1. Не меняет уже начатую запись и сохраняется после Close. None=0 в этом коде означает Deflate level 0, не ZIP Store. Некорректный уровень отклоняется с диагностикой; параметры сжатия не гарантируют конкретную скорость/размер.

Методы10

AddDirectoryError
# AddDirectory
C#
public Error AddDirectory(string path, FileAccess.UnixPermissionFlags permissions = FileAccess.UnixPermissionFlags.ExecuteOther | FileAccess.UnixPermissionFlags.ReadOther | FileAccess.UnixPermissionFlags.ExecuteGroup | FileAccess.UnixPermissionFlags.ReadGroup | FileAccess.UnixPermissionFlags.ExecuteOwner | FileAccess.UnixPermissionFlags.WriteOwner | FileAccess.UnixPermissionFlags.ReadOwner, ulong modifiedTime = 0);

Добавляет отдельную запись каталога, дописывая / при необходимости, и сразу её закрывает. Не сканирует файловую систему и не добавляет всех родителей. Повтор запомненного пути в этом сеансе отклоняется; список каталогов уже существующего ZIP в кеш автоматически не загружается. Вызывайте между файловыми записями, с проверкой Error.

Параметры
ИмяТипПо умолчанию
pathstring—
permissionsFileAccess.UnixPermissionFlagsFileAccess.UnixPermissionFlags.ExecuteOther | FileAccess.UnixPermissionFlags.ReadOther | FileAccess.UnixPermissionFlags.ExecuteGroup | FileAccess.UnixPermissionFlags.ReadGroup | FileAccess.UnixPermissionFlags.ExecuteOwner | FileAccess.UnixPermissionFlags.WriteOwner | FileAccess.UnixPermissionFlags.ReadOwner
modifiedTimeulong0
path

Точное имя записи внутри ZIP, обычно относительное с /; это не локальный путь назначения или источник данных.

permissions

Флаги UNIX-прав в метаданных ZIP, не применение прав файловой системы. Default 0644 для файла и 0755 для каталога; 0 также выбирает соответствующий default, а не запрет всех прав.

modifiedTime

UNIX-секунды, не миллисекунды; 0 — текущее время, не эпоха 1970. Запись переводится с текущим часовым сдвигом хоста и точностью ZIP-метаданных.

Возвращает Error

Error.Ok при успехе; иначе ошибка текущего этапа, не гарантия неизменности файла.

CloseError
# Close
C#
public Error Close();

Завершает центральный каталог ZIP и закрывает файл; проверяйте Error.Ok до публикации результата. Текущая библиотека также завершает открытую запись, но отдельный CloseFile позволяет проверить её результат. Сохраняет CompressionLevel и очищает кеш добавленных каталогов при успехе. Повтор закрытия закрытого сеанса диагностируется.

Возвращает Error

Error.Ok при успехе; иначе ошибка текущего этапа, не гарантия неизменности файла.

CloseFileError
# CloseFile
C#
public Error CloseFile();

Завершает текущую запись, сохраняя архив открытым для следующей. После AddDirectory запись уже закрыта. Проверяйте Error.Ok; повторный вызов без текущей записи не является успешной операцией.

Возвращает Error

Error.Ok при успехе; иначе ошибка текущего этапа, не гарантия неизменности файла.

GetCompressionLevelint
# GetCompressionLevel
C#
public int GetCompressionLevel();

Читает сохранённую настройку упаковщика, не категорию из заголовка существующей записи. Не требует открытого архива.

Возвращает int

Сохранённый уровень упаковщика -1 или 0..9.

OpenError
# Open
C#
public Error Open(string path, ZipPacker.ZipAppend append = ZipPacker.ZipAppend.Create);

Открывает назначение в режиме append, default Create перезаписывает файл. Addinzip дописывает записи, Createafter создаёт отдельный ZIP после существующих байтов. Если сеанс уже открыт, сначала вызывает Close, не передавая его ошибку напрямую: закрывайте явно. Родительский каталог назначения подготовьте заранее.

Параметры
ИмяТипПо умолчанию
pathstring—
appendZipPacker.ZipAppendZipPacker.ZipAppend.Create
path

Путь файла архива для FileAccess; для записи нужен доступный каталог и право записи. Это не имя записи внутри ZIP.

append

Create=0 перезаписывает; Createafter=1 добавляет новый ZIP после байтов; Addinzip=2 дописывает записи существующего ZIP без замены имён.

Возвращает Error

Error.Ok при успехе; иначе ошибка текущего этапа, не гарантия неизменности файла.

SetCompressionLevelvoid
# SetCompressionLevel
C#
public void SetCompressionLevel(int compressionLevel);

Назначает CompressionLevel для последующих записей: -1 или 0..9. Можно до Open; текущую открытую запись не пересжимает.

Параметры
ИмяТипПо умолчанию
compressionLevelint—
compressionLevel

-1 для default либо целое 0..9; применяется к следующим записям. Уровень 0 не переключает метод ZIP на Store в текущей реализации.

StartFile2 перегрузки
# StartFile · 1/2
C#
public Error StartFile(string path);

Начинает новую запись с именем path внутри открытого архива, а не читает исходный файл. При необходимости добавляет запись непосредственного родителя с 0755. Использует текущий уровень сжатия на момент вызова. Повтор имени создаёт дубликат, не замену. Завершайте предыдущую запись явно; метаданные этой записи задают permissions/modifiedTime. Этот overload задаёт 0644 и modifiedTime=0; не помечен Obsolete в SDK.

Параметры
ИмяТипПо умолчанию
pathstring—
path

Точное имя записи внутри ZIP, обычно относительное с /; это не локальный путь назначения или источник данных.

Возвращает Error

Error.Ok при успехе; иначе ошибка текущего этапа, не гарантия неизменности файла.

# StartFile · 2/2
C#
public Error StartFile(string path, FileAccess.UnixPermissionFlags permissions = FileAccess.UnixPermissionFlags.ReadOther | FileAccess.UnixPermissionFlags.ReadGroup | FileAccess.UnixPermissionFlags.WriteOwner | FileAccess.UnixPermissionFlags.ReadOwner, ulong modifiedTime = 0);

Начинает новую запись с именем path внутри открытого архива, а не читает исходный файл. При необходимости добавляет запись непосредственного родителя с 0755. Использует текущий уровень сжатия на момент вызова. Повтор имени создаёт дубликат, не замену. Завершайте предыдущую запись явно; метаданные этой записи задают permissions/modifiedTime.

Параметры
ИмяТипПо умолчанию
pathstring—
permissionsFileAccess.UnixPermissionFlagsFileAccess.UnixPermissionFlags.ReadOther | FileAccess.UnixPermissionFlags.ReadGroup | FileAccess.UnixPermissionFlags.WriteOwner | FileAccess.UnixPermissionFlags.ReadOwner
modifiedTimeulong0
path

Точное имя записи внутри ZIP, обычно относительное с /; это не локальный путь назначения или источник данных.

permissions

Флаги UNIX-прав в метаданных ZIP, не применение прав файловой системы. Default 0644 для файла и 0755 для каталога; 0 также выбирает соответствующий default, а не запрет всех прав.

modifiedTime

UNIX-секунды, не миллисекунды; 0 — текущее время, не эпоха 1970. Запись переводится с текущим часовым сдвигом хоста и точностью ZIP-метаданных.

Возвращает Error

Error.Ok при успехе; иначе ошибка текущего этапа, не гарантия неизменности файла.

WriteFile2 перегрузки
# WriteFile · 1/2
C#
public Error WriteFile(byte[] data);

Записывает байты в текущую открытую запись. Несколько вызовов дописывают последовательные куски; путь к файлу и кодировку метод не определяет. Копируйте данные ограниченными порциями по своему бюджету памяти. Ошибку проверяйте по Error, а не только по последующему Close.

Параметры
ИмяТипПо умолчанию
databyte[]—
data

Байты текущей записи; string сначала явно закодируйте, например UTF-8. Массив/ReadOnlySpan не является путём к файлу.

Возвращает Error

Error.Ok при успехе; иначе ошибка текущего этапа, не гарантия неизменности файла.

# WriteFile · 2/2
C#
public Error WriteFile(ReadOnlySpan<byte> data);

Записывает байты в текущую открытую запись. Несколько вызовов дописывают последовательные куски; путь к файлу и кодировку метод не определяет. Копируйте данные ограниченными порциями по своему бюджету памяти. Ошибку проверяйте по Error, а не только по последующему Close.

Параметры
ИмяТипПо умолчанию
dataReadOnlySpan<byte>—
data

Байты текущей записи; string сначала явно закодируйте, например UTF-8. Массив/ReadOnlySpan не является путём к файлу.

Возвращает Error

Error.Ok при успехе; иначе ошибка текущего этапа, не гарантия неизменности файла.

ZipPacker.CompressionLevelEnum

ЗначениеОписание
Best = 9

Уровень Deflate 9 для последующих записей. Не гарантирует минимальный размер для любого ввода или конкретное время упаковки.

Default = -1

Уровень -1: настройка zlib по умолчанию для последующих записей. Не значение, которое ZipReader обязан вернуть для такой записи.

Fast = 1

Уровень Deflate 1 для последующих записей. Скорость и размер зависят от данных; не меняет текущую запись.

None = 0

Уровень 0. В текущем упаковщике остаётся метод ZIP Deflate с уровнем 0, не метод Store. Проверено по заголовку созданного архива; не обещает конкретную скорость.

ZipPacker.ZipAppend

ЗначениеОписание
Addinzip = 2

2: дописывает записи существующего ZIP. Повтор имени добавляет ещё одну запись, не заменяет старую.

Create = 0

0: создаёт ZIP с перезаписью файла назначения. Для сохранения существующего ZIP это неподходящий режим.

Createafter = 1

1: создаёт новый ZIP после содержимого существующего файла; не дописывает записи в прежний ZIP как Addinzip.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.