FileAccess
Доступ к файлам с явными режимами, байтовыми форматами и проверкой ошибок.
FileAccess читает и пишет файлы по OS path, asset:// и user://. Для прогресса используйте user://; импортированные ресурсы проекта загружайте через ResourceLoader, не рассчитывая на доступность исходного файла после экспорта.
Проверьте Open() на null и сразу получите GetOpenError() на том же потоке. Собственный handle освобождайте через using. Write/WriteRead очищают существующий файл; ReadWrite сохраняет содержимое и начинает с позиции 0. Родительские каталоги создаются отдельно.
Позиции и длины измеряются в байтах. Проверяйте фактическую длину GetBuffer() и результат записи; одно числовое значение или пустая строка не доказывают успех. GetAsText() читает весь файл с восстановлением позиции, а EofReached() отмечает чтение за конец. BigEndian относится к числовым полям, не меняет произвольные байты/UTF-8.
Поведение зависит от handle: обычный Windows Flush() сбрасывает output buffer, а сжатые/зашифрованные контейнеры держат запись в памяти до закрытия. Ни один из этих вызовов не является общей гарантией сохранности при отключении питания. У encrypted Write есть проверенное ограничение: неверный ключ может быть обнаружен уже после усечения назначения.
Чтение UTF-8 и диагностика, двоичный слот, сохранение с резервной копией. Проверки выполнялись на Windows в отдельных проектах; временные файлы проверены по исходникам, а безопасность шифрования и другие платформы не сертифицировались.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства1
BigEndianСвойство
public bool BigEndian { get; set; }Настройка порядка байтов числовых Get/Store операций данного handle; false — little-endian, true — big-endian. Новый Open() даёт новый handle со стандартным false: значение не сохраняется в файл как метаданные. Не переставляет байты GetBuffer/StoreBuffer или UTF-8 текста. У StoreVar/GetVar влияет на 32-битный префикс длины, но не на внутренний Variant payload; это проверено. Читатель и писатель должны договориться о формате.
Методы76
Closevoid
public void Close();Закрывает файл данного handle; using/Dispose собственного wrapper также завершает его использование. Не продолжайте чтение, seek или EofReached() после закрытия. Повторный Close() проверен на Windows, но это не повторное открытие; Open() создаёт другой handle. Возвращаемого Error у метода нет, поэтому закрытие не является подтверждением надёжного сохранения.
CreateTemp2 перегрузки
public static FileAccess CreateTemp(FileAccess.ModeFlags modeFlags, string prefix = "", string extension = "", bool keep = false);Создаёт файл в OS temp и возвращает собственный RefCounted handle с выбранным режимом. Файл сначала создаётся через Write и затем открывается в запрошенном режиме, поэтому Read может открыть новый пустой temp-файл. prefix/extension — части имени, не пути. При null сразу читайте GetOpenError(). keep=false включает попытку удаления исходного temp-файла при освобождении последней native-ссылки; Close() сам по себе только закрывает поток. keep=true сохраняет файл после освобождения. C# using снимает собственную ссылку, но другие владельцы могут продлить срок жизни. Очистка после сбоя процесса не гарантируется; lifecycle здесь сверён только по исходникам.
| Имя | Тип | По умолчанию |
|---|---|---|
modeFlags | FileAccess.ModeFlags | — |
prefix | string | "" |
extension | string | "" |
keep | bool | false |
modeFlagsДля контейнера используйте только Read или Write; для CreateTemp это режим возвращаемого handle.
prefixДопустимый префикс имени без разделителей пути; пустой разрешён.
extensionДопустимое расширение имени; не каталог. Одна начальная точка удаляется native кодом.
keepTrue сохраняет temp-файл после освобождения; false включает попытку удаления последней native-ссылкой.
FileAccessСобственный temp handle либо null; автоматическая очистка зависит от keep и native-ссылок.
public static FileAccess CreateTemp(int modeFlags, string prefix, string extension, bool keep);Создаёт файл в OS temp и возвращает собственный RefCounted handle с выбранным режимом. Файл сначала создаётся через Write и затем открывается в запрошенном режиме, поэтому Read может открыть новый пустой temp-файл. prefix/extension — части имени, не пути. При null сразу читайте GetOpenError(). keep=false включает попытку удаления исходного temp-файла при освобождении последней native-ссылки; Close() сам по себе только закрывает поток. keep=true сохраняет файл после освобождения. C# using снимает собственную ссылку, но другие владельцы могут продлить срок жизни. Очистка после сбоя процесса не гарантируется; lifecycle здесь сверён только по исходникам. Overload с int передаёт числовое значение как ModeFlags; используйте только значения этого enum.
| Имя | Тип | По умолчанию |
|---|---|---|
modeFlags | int | — |
prefix | string | — |
extension | string | — |
keep | bool | — |
modeFlagsДля контейнера используйте только Read или Write; для CreateTemp это режим возвращаемого handle.
prefixДопустимый префикс имени без разделителей пути; пустой разрешён.
extensionДопустимое расширение имени; не каталог. Одна начальная точка удаляется native кодом.
keepTrue сохраняет temp-файл после освобождения; false включает попытку удаления последней native-ссылкой.
FileAccessСобственный temp handle либо null; автоматическая очистка зависит от keep и native-ссылок.
EofReachedbool
public bool EofReached();Признак чтения за конец файла, не сравнение GetPosition() с GetLength(). В Windows точное чтение всех доступных байт оставляет false; следующая попытка чтения включает EOF. Пустая строка может быть обычной пустой строкой файла. Используйте только на открытом handle и проверяйте фактическую длину GetBuffer()/результат чтения.
boolПризнак чтения за EOF; положение точно в конце само по себе не достаточно.
FileExistsbool
public static bool FileExists(string path);Проверяет файл через backend/packed data; каталог не считается файлом. False не различает отсутствие и недоступность; true не гарантирует следующий Open() и не заменяет ResourceLoader для импортированных ресурсов. Не используйте как единственную обработку ошибок: проверяйте сам Open().
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathПуть проверяемого файла; само открытие всё равно требует проверки результата.
boolTrue, если backend видит файл; false также возможен при недоступности.
Flushvoid
public void Flush();Сбрасывает буфер записи открытого handle в backend; не закрывает файл. В Windows вызывается fflush, отдельного Error метод не возвращает. После буферизованных записей вызывайте перед Resize(), иначе последующий сброс может восстановить старую длину; это воспроизведено. Не равен System.IO.FileStream.Flush(true) и не гарантирует сохранность при отключении питания.
Get16ushort
public ushort Get16();Читает беззнаковое 16-битное число из 2 байт текущей позиции. Порядок байтов задаёт BigEndian этого handle; по умолчанию little-endian. Короткое чтение не даёт отдельного bool и может вернуть частичное значение; ноль также допустим как данные. Проверяйте размер записи и GetError(), не определяйте успех по самому числу.
ushort16-битное беззнаковое значение; при недочитанной записи возможно частичное значение.
Get32uint
public uint Get32();Читает беззнаковое 32-битное число из 4 байт текущей позиции. Порядок байтов задаёт BigEndian этого handle; по умолчанию little-endian. Короткое чтение не даёт отдельного bool и может вернуть частичное значение; ноль также допустим как данные. Проверяйте размер записи и GetError(), не определяйте успех по самому числу.
uint32-битное беззнаковое значение; при недочитанной записи возможно частичное значение.
Get64ulong
public ulong Get64();Читает беззнаковое 64-битное число из 8 байт текущей позиции. Порядок байтов задаёт BigEndian этого handle; по умолчанию little-endian. Короткое чтение не даёт отдельного bool и может вернуть частичное значение; ноль также допустим как данные. Проверяйте размер записи и GetError(), не определяйте успех по самому числу.
ulong64-битное беззнаковое значение; при недочитанной записи возможно частичное значение.
Get8byte
public byte Get8();Читает беззнаковое 8-битное число из 1 байт текущей позиции. Для одного байта BigEndian ничего не меняет. Короткое чтение не даёт отдельного bool и может вернуть частичное значение; ноль также допустим как данные. Проверяйте размер записи и GetError(), не определяйте успех по самому числу.
byte8-битное беззнаковое значение; при недочитанной записи возможно частичное значение.
GetAccessTimeulong
public static ulong GetAccessTime(string file);Метка доступа в целых секундах Unix epoch. Не счётчик чтений и не надёжный признак последнего игрового действия: обновление зависит от ОС/файловой системы. В Windows при отсутствии access time возможен fallback к creation time; ошибка может дать 0 с диагностикой. Не определяйте доступность/право чтения только по этой метке.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
ulongUnix seconds; не гарантированно обновляемая метка каждого чтения.
GetAsText2 перегрузки
public string GetAsText();Читает весь файл как UTF-8 от начала и затем восстанавливает исходную позицию. Это не чтение оставшейся части. Основной overload сохраняет CR; метод выделяет память под всё содержимое, поэтому заранее проверяйте размер. Не является строгой проверкой UTF-8/схемы; для строгого декодирования читайте ограниченный GetBuffer() и проверяйте декодер отдельно. Восстановление позиции не гарантирует неизменный GetError().
stringUTF-8 текст всего файла; пустая строка сама по себе не подтверждает успех.
public string GetAsText(bool skipCr);Читает весь файл как UTF-8 от начала и затем восстанавливает исходную позицию. Это не чтение оставшейся части. Основной overload сохраняет CR; метод выделяет память под всё содержимое, поэтому заранее проверяйте размер. Не является строгой проверкой UTF-8/схемы; для строгого декодирования читайте ограниченный GetBuffer() и проверяйте декодер отдельно. Восстановление позиции не гарантирует неизменный GetError().
| Имя | Тип | По умолчанию |
|---|---|---|
skipCr | bool | — |
skipCrTrue удаляет все CR, включая одиночные, а не только CRLF. False сохраняет исходные CR.
stringUTF-8 текст всего файла; пустая строка сама по себе не подтверждает успех.
GetBufferbyte[]
public byte[] GetBuffer(long length);Читает до length байт от текущей позиции и возвращает новый C# byte[]. При EOF массив может быть короче запроса; проверяйте Length для фиксированного формата. 0 возвращает пустой массив без чтения, отрицательная длина недопустима. Ограничивайте объём заранее; пустой массив не различает нулевой запрос, конец и ошибку.
| Имя | Тип | По умолчанию |
|---|---|---|
length | long | — |
lengthЗапрошенное число байт >= 0; заранее ограничьте размер выделения.
byte[]Новый byte[] фактически прочитанных байт, возможно короче length.
GetCsvLinestring[]
public string[] GetCsvLine(string delim = ",");Читает CSV-запись в string[]; quoted поле может занимать несколько физических строк. Разделитель — один символ, не двойная кавычка; экранирование кавычки внутри quoted поля — удвоение. Переводы строк при чтении нормализуются через GetLine(). Пустая строка даёт одно пустое поле, не однозначный признак EOF. Метод не проверяет вашу схему/число колонок; повреждённые кавычки могут дать диагностику и результат, поэтому валидируйте запись отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
delim | string | "," |
delimОдин символ разделителя, отличный от двойной кавычки для парного чтения/записи. Не многосимвольная строка.
string[]Поля одной CSV-записи; пустая запись обычно содержит одно пустое поле. Схему проверяйте отдельно.
GetDoubledouble
public double GetDouble();Читает Double из 8 байт и возвращает C# double. BigEndian учитывается через числовую раскладку. Метод не проверяет конечность или допустимый диапазон для игровой логики. Формат, оставшийся размер записи и статус I/O проверяйте отдельно; это не чтение текстового числа.
doubleC# double; полученное число само по себе не доказывает полное успешное чтение.
GetErrorError
public Error GetError();Последний статус backend данного handle, а не ошибка последнего Open(). Проверяйте сразу после операции. В Windows успешный Seek() может очистить EOF indicator, сохранив прежний FileEof в GetError(); успешное последующее чтение обновляет статус. Не трактуйте старый код как новую неудачу и не игнорируйте bool/длину результата текущей операции.
ErrorПоследний обновлённый backend Error; он может оставаться от предыдущей операции.
GetExtendedAttributebyte[]
public static byte[] GetExtendedAttribute(string file, string attributeName);Читает байты именованного расширенного атрибута/потока через backend; Windows использует alternate data stream. Пустой byte[] не различает пустое значение, отсутствующее имя, ошибку или неподдерживаемый backend. Список имён даёт дополнительную информацию, но не атомарную проверку. Для данных, записанных SetExtendedAttributeString(), raw bytes могут включать завершающий NUL.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
attributeName | string | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
attributeNameНепустое имя в формате backend; Windows использует имя отдельного data stream. Не является путём основного файла.
byte[]Новый byte[] значения; пустое не является однозначной диагностикой.
GetExtendedAttributeStringstring
public static string GetExtendedAttributeString(string file, string attributeName);Получает именованные байты и декодирует их как UTF-8. Не является строгой проверкой текста; пустой результат не различает отсутствие, пустые данные и неудачу. Для точного формата получите GetExtendedAttribute() и задайте собственную политику UTF-8/терминатора. Нельзя считать атрибут частью основного содержимого, возвращаемого GetFileAsBytes().
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
attributeName | string | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
attributeNameНепустое имя в формате backend; Windows использует имя отдельного data stream. Не является путём основного файла.
stringДекодированная строка; пустое не является однозначной диагностикой.
GetExtendedAttributesListstring[]
public static string[] GetExtendedAttributesList(string file);Имена доступных backend расширенных атрибутов/потоков. Windows перечисляет именованные data streams, не включая основной безымянный поток. Порядок не является контрактом. Пустой массив также возможен при недоступности/ошибке, отдельного Error нет; список может измениться до чтения значения.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
string[]string[] имён без обещания сортировки или атомарности.
GetFileAsBytesbyte[]
public static byte[] GetFileAsBytes(string path);Открывает файл, выделяет массив под всю длину и возвращает байты без декодирования. Bound helper обновляет GetOpenError(): пустой массив может быть корректным пустым файлом либо ошибкой открытия, проверяйте код сразу. Это удобный helper, не ограниченный по размеру reader: native путь не выдаёт фактическое число прочитанных байт отдельно. Для строгого лимита/обработки короткого чтения используйте Open(), GetLength() и ограниченный GetBuffer().
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathПуть файла для чтения; размер и доступность могут измениться после отдельной проверки.
byte[]Новый byte[]; пустой массив требует проверки GetOpenError() для различения ошибки открытия.
GetFileAsStringstring
public static string GetFileAsString(string path);Читает весь файл и декодирует UTF-8; CR сохраняются. Пустая строка может быть корректными данными или ошибкой открытия — сразу проверяйте GetOpenError(), обновляемый helper. Этот код отражает открытие, не полноценную проверку UTF-8, схемы или конкурентного изменения файла. Для строгого декодирования используйте ограниченное чтение байт и проверяющий декодер.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathПуть файла для чтения; размер и доступность могут измениться после отдельной проверки.
stringUTF-8 строка; проверяйте GetOpenError() отдельно от декодирования/схемы.
GetFloatfloat
public float GetFloat();Читает Float из 4 байт и возвращает C# float. BigEndian учитывается через числовую раскладку. Метод не проверяет конечность или допустимый диапазон для игровой логики. Формат, оставшийся размер записи и статус I/O проверяйте отдельно; это не чтение текстового числа.
floatC# float; полученное число само по себе не доказывает полное успешное чтение.
GetHalffloat
public float GetHalf();Читает Half из 2 байт и возвращает C# float. BigEndian учитывается через числовую раскладку. Half теряет точность исходного float: это 16-битное хранение, не 32-битное. Формат, оставшийся размер записи и статус I/O проверяйте отдельно; это не чтение текстового числа.
floatC# float; полученное число само по себе не доказывает полное успешное чтение.
public static bool GetHiddenAttribute(string file);Спрашивает backend о hidden-атрибуте существующего пути; Windows читает FILE_ATTRIBUTE_HIDDEN. Это не правило «имя начинается с точки» для всех платформ и не ограничение доступа. False может быть результатом ошибки с диагностикой, а не подтверждением обычного файла. Packed-данные могут не предоставлять атрибут.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
boolBackend hidden flag; false не подтверждает успешное чтение атрибутов.
GetLengthulong
public ulong GetLength();Длина открытого файла в байтах, не оставшийся объём и не число символов. Проверяйте лимит до выделения буфера, но учитывайте, что содержимое может измениться. Windows временно выполняет seek к концу и назад; состояние EOF может измениться, поэтому это не замена проверке результата чтения.
ulongРазмер открытого файла в байтах.
GetLinestring
public string GetLine();Читает следующую UTF-8 строку с текущей позиции, не возвращая разделитель. Обрабатывает LF, CRLF и одиночный CR; NUL тоже останавливает строку, поэтому метод не подходит для произвольных бинарных данных. Пустая строка не обязательно означает EOF; последняя строка без завершающего перевода строки также возвращается. Для ограниченных входных данных следите за размером файла.
stringСтрока без разделителя; пустая строка также возможна до EOF.
GetMd5string
public static string GetMd5(string path);Читает основной поток файла и возвращает MD5 как 32 строчных hex-символов. Корректный пустой файл имеет непустой digest; ошибка открытия даёт пустую строку. Это хеш, не цифровая подпись или проверка доверия к источнику. Native helper не предоставляет отдельный статус полноты чтения; I/O ошибки после частичного чтения и конкурирующие изменения здесь не проверялись.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathПуть файла для чтения; размер и доступность могут измениться после отдельной проверки.
string32 строчных hex-символа или пустая строка при неудачном открытии.
GetModifiedTimeulong
public static ulong GetModifiedTime(string file);Метка изменения в целых секундах Unix epoch, не миллисекундах и не локальном времени. В Windows при отсутствующей write time возможен fallback к creation time; при ошибке/недоступности возможен 0. Точность и обновление зависят от backend. Для проверки содержимого одной метки недостаточно; packed/export metadata здесь не выполнялись.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
ulongUnix seconds; 0 также возможен при недоступном результате.
GetOpenErrorError
public static Error GetOpenError();Последняя ошибка публичного открытия файла на текущем потоке. Следующий вызов семейства Open может заменить её даже при успехе. Получайте сразу после null; для чтения/записи уже открытого handle используйте результат операции и GetError(), а не этот static getter.
ErrorПоследний статус открытия на этом потоке; не статус текущей операции handle.
GetPascalStringstring
public string GetPascalString();Читает 32-битную длину и затем UTF-8 payload, не обычную строку до LF/NUL. Длина задаётся в байтах и читается с BigEndian. Native метод выделяет буфер по префиксу: прежде чем применять его к внешним данным, проверьте ограничение длины и наличие payload. Возвращённая строка не является строгой валидацией повреждённой записи; неверные/огромные длины в этом проходе не выполнялись.
stringДекодированная строка; один результат не подтверждает корректный frame/размер.
GetPathstring
public string GetPath();Путь, связанный с открытым handle; Windows возвращает исходную строку Open(), например asset://. Это не обязательно нормализованный OS path или постоянный ID. Для физического пути используйте GetPathAbsolute(), учитывая ограничения backend/экспорта.
stringСвязанный с handle исходный/платформенный путь.
GetPathAbsolutestring
public string GetPathAbsolute();Абсолютное представление пути данного handle, если backend его предоставляет. Windows убирает служебный префикс и использует прямые разделители. Это не доказательство существования, права записи, доступности вне приложения или реального loose-файла в экспортированном пакете.
stringАбсолютное представление backend; не универсальный физический путь для всех экспортов.
GetPositionulong
public ulong GetPosition();Текущая позиция открытого файла в байтах. UTF-8 символ может занимать несколько байт; позиция не равна числу символов. Используйте вместе с допустимым форматом данных и результатом чтения. Позиция в конце сама по себе не означает EofReached().
ulongТекущий байтовый offset, не индекс символа.
GetReadOnlyAttributebool
public static bool GetReadOnlyAttribute(string file);Читает backend read-only атрибут, в Windows — FILE_ATTRIBUTE_READONLY. Не является полной проверкой ACL, возможности Open(Write) или доступа другого процесса. False также возможен при ошибке запроса с диагностикой; проверяйте результат реальной операции записи отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
boolBackend read-only flag; не полная модель прав доступа.
GetRealfloat
public float GetReal();Читает native real по внутреннему режиму чтения; текущий SDK возвращает C# float, а установленный build прочитал 4 байта. Не считайте этот метод универсальным согласованием precision между сборками. Для стабильного внешнего формата выберите GetFloat() или GetDouble() явно и закрепите ширину, порядок байтов и версию записи.
floatC# float текущего SDK; ширина native формата должна быть согласована отдельно.
GetSha256string
public static string GetSha256(string path);Читает основной поток файла и возвращает SHA-256 как 64 строчных hex-символов. Корректный пустой файл имеет непустой digest; ошибка открытия даёт пустую строку. Это хеш, не цифровая подпись или проверка доверия к источнику. Native helper не предоставляет отдельный статус полноты чтения; I/O ошибки после частичного чтения и конкурирующие изменения здесь не проверялись.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathПуть файла для чтения; размер и доступность могут измениться после отдельной проверки.
string64 строчных hex-символа или пустая строка при неудачном открытии.
GetSizelong
public static long GetSize(string file);Размер файла по пути в байтах, без открытия публичного handle. Для обычной ошибки backend возможен -1, но это не универсальный индикатор: Windows для некоторых недопустимых путей возвращает 0. Ноль поэтому не доказывает существование пустого файла. Проверяйте сам Open() для дальнейшего I/O; размер может измениться после запроса.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
longРазмер в байтах либо backend sentinel; -1 и 0 не одинаково трактуются для всех путей.
GetUnixPermissionsFileAccess.UnixPermissionFlags
public static FileAccess.UnixPermissionFlags GetUnixPermissions(string file);Возвращает Unix permission bits, если backend их предоставляет, не полный ACL. Windows возвращает 0 даже для доступного файла: это не означает отсутствие всех прав. Packed-данные также могут дать 0. Поддержка и право фактического открытия определяются отдельно.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
FileAccess.UnixPermissionFlagsPermission bitmask; 0 также означает отсутствие поддержки в Windows.
GetVarVariant
public Variant GetVar(bool allowObjects = false);Читает запись StoreVar: 32-битную длину с текущим BigEndian и native Variant payload. В C# ограничивайте срок жизни результата через using Variant. Nil может быть корректно сохранённым значением, а при ошибке также возможен Nil: это не достаточный признак успеха. Заранее ограничьте frame и проверяйте схему/типы. allowObjects=false оставляйте для внешних данных; true допускает создание native объектов по данным, а не просто дополнительные поля. Полные объекты и повреждённые длины здесь не выполнялись.
| Имя | Тип | По умолчанию |
|---|---|---|
allowObjects | bool | false |
allowObjectsПо умолчанию false. Разрешайте true только для доверенного объектного формата, понимая возможность создания классов из payload.
VariantVariant прочитанной записи; Nil также может быть допустимыми данными. Собственный результат освобождайте через using.
IsBigEndianbool
public bool IsBigEndian();Настройка порядка байтов числовых Get/Store операций данного handle; false — little-endian, true — big-endian. Новый Open() даёт новый handle со стандартным false: значение не сохраняется в файл как метаданные. Не переставляет байты GetBuffer/StoreBuffer или UTF-8 текста. У StoreVar/GetVar влияет на 32-битный префикс длины, но не на внутренний Variant payload; это проверено. Читатель и писатель должны договориться о формате.
boolТекущее значение BigEndian данного handle.
IsOpenbool
public bool IsOpen();Проверяет, удерживает ли живой handle открытый файл. После Close() возвращает false на проверенном Windows. Не подтверждает режим записи, наличие места, актуальность содержимого или успех прошлой операции. После Dispose не используйте wrapper даже ради этой проверки.
boolTrue, если живой handle удерживает открытый файл.
OpenFileAccess
public static FileAccess Open(string path, FileAccess.ModeFlags flags);Открывает файл и возвращает собственный RefCounted handle; в C# используйте using. При null сразу читайте GetOpenError() на том же потоке. Read/ReadWrite требуют существующий файл; Write/WriteRead создают файл либо очищают существующий. ReadWrite сохраняет содержимое и начинает с позиции 0, не является append. Родители не создаются. Для прогресса используйте user://; наличие исходного файла в asset:// после экспорта не гарантируется.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
flags | FileAccess.ModeFlags | — |
pathПуть файла: user://, asset:// либо допустимый OS path; родитель должен существовать.
flagsRead/ReadWrite для существующего файла; Write/WriteRead создают или усекают. Не путайте ReadWrite с WriteRead.
FileAccessСобственный FileAccess либо null; GetOpenError() нужно получить сразу.
OpenCompressedFileAccess
public static FileAccess OpenCompressed(string path, FileAccess.ModeFlags modeFlags, FileAccess.CompressionMode compressionMode = FileAccess.CompressionMode.Fastlz);Открывает контейнер сжатия FileAccess, а не произвольный .zip/.gz. Даже CompressionMode.GZip здесь выбирает алгоритм внутри engine-контейнера GCPF. Для записи используйте Write, для чтения Read; ReadWrite отвергается, WriteRead не является поддержанным редактированием готового контейнера. При чтении алгоритм берётся из заголовка. Запись буферизуется до Close()/освобождения; Flush() её не финализирует. Возвращаемый handle принадлежит вызывающему; при null сразу проверяйте GetOpenError(). Повреждённые/чужие контейнеры не являются проверенными входными данными.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
modeFlags | FileAccess.ModeFlags | — |
compressionMode | FileAccess.CompressionMode | FileAccess.CompressionMode.Fastlz |
pathПуть файла контейнера; при Write существующее содержимое может быть потеряно до завершения настройки.
modeFlagsДля контейнера используйте только Read или Write; для CreateTemp это режим возвращаемого handle.
compressionModeАлгоритм записи внутри GCPF; чтение выбирает его из заголовка. Поддержка записи конкретного алгоритма должна быть доступна; Brotli используется только для чтения.
FileAccessСобственный FileAccess либо null; при null сразу GetOpenError().
OpenEncrypted4 перегрузки
public static FileAccess OpenEncrypted(string path, FileAccess.ModeFlags modeFlags, byte[] key);Открывает собственный зашифрованный контейнер FileAccess с 32-байтным ключом; используйте только Read или Write. Критично для 1.0.0: базовый Write открывает/усекает назначение до проверки ключа. Неверная длина ключа может вернуть null/Error.InvalidParameter уже после потери прежнего содержимого; это воспроизведено на одноразовом файле. Проверяйте параметры до вызова и не записывайте поверх единственной ценной копии. Данные держатся в памяти до Close()/освобождения; Flush() не пишет готовый контейнер. IV при записи должен быть пустым для генерации либо 16 байт; при чтении используется IV из файла. Формат использует AES-CFB и MD5 данных, не отдельный проверенный authenticated-encryption протокол. Проверка безопасности и чтение с неверным ключом не выполнялись; roundtrip не доказывает стойкость. При null сразу проверяйте GetOpenError(). Overload без iV выбирает автоматическую генерацию IV при записи.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
modeFlags | FileAccess.ModeFlags | — |
key | byte[] | — |
pathПуть файла контейнера; при Write существующее содержимое может быть потеряно до завершения настройки.
modeFlagsДля контейнера используйте только Read или Write; для CreateTemp это режим возвращаемого handle.
keyКлюч ровно 32 байта. Проверьте длину до открытия Write: native проверка происходит после открытия базового файла. Array/span не являются текстовым паролем.
FileAccessСобственный FileAccess либо null; ошибка Write не означает сохранность существовавшего файла.
public static FileAccess OpenEncrypted(string path, FileAccess.ModeFlags modeFlags, byte[] key, byte[] iV = null);Открывает собственный зашифрованный контейнер FileAccess с 32-байтным ключом; используйте только Read или Write. Критично для 1.0.0: базовый Write открывает/усекает назначение до проверки ключа. Неверная длина ключа может вернуть null/Error.InvalidParameter уже после потери прежнего содержимого; это воспроизведено на одноразовом файле. Проверяйте параметры до вызова и не записывайте поверх единственной ценной копии. Данные держатся в памяти до Close()/освобождения; Flush() не пишет готовый контейнер. IV при записи должен быть пустым для генерации либо 16 байт; при чтении используется IV из файла. Формат использует AES-CFB и MD5 данных, не отдельный проверенный authenticated-encryption протокол. Проверка безопасности и чтение с неверным ключом не выполнялись; roundtrip не доказывает стойкость. При null сразу проверяйте GetOpenError().
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
modeFlags | FileAccess.ModeFlags | — |
key | byte[] | — |
iV | byte[] | null |
pathПуть файла контейнера; при Write существующее содержимое может быть потеряно до завершения настройки.
modeFlagsДля контейнера используйте только Read или Write; для CreateTemp это режим возвращаемого handle.
keyКлюч ровно 32 байта. Проверьте длину до открытия Write: native проверка происходит после открытия базового файла. Array/span не являются текстовым паролем.
iVПри записи пустое значение включает генерацию IV; непустое должно иметь 16 байт. При чтении используется IV заголовка. Не переносите фиксированный QA-IV в производственную схему.
FileAccessСобственный FileAccess либо null; ошибка Write не означает сохранность существовавшего файла.
public static FileAccess OpenEncrypted(string path, FileAccess.ModeFlags modeFlags, ReadOnlySpan<byte> key);Открывает собственный зашифрованный контейнер FileAccess с 32-байтным ключом; используйте только Read или Write. Критично для 1.0.0: базовый Write открывает/усекает назначение до проверки ключа. Неверная длина ключа может вернуть null/Error.InvalidParameter уже после потери прежнего содержимого; это воспроизведено на одноразовом файле. Проверяйте параметры до вызова и не записывайте поверх единственной ценной копии. Данные держатся в памяти до Close()/освобождения; Flush() не пишет готовый контейнер. IV при записи должен быть пустым для генерации либо 16 байт; при чтении используется IV из файла. Формат использует AES-CFB и MD5 данных, не отдельный проверенный authenticated-encryption протокол. Проверка безопасности и чтение с неверным ключом не выполнялись; roundtrip не доказывает стойкость. При null сразу проверяйте GetOpenError(). Overload без iV выбирает автоматическую генерацию IV при записи.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
modeFlags | FileAccess.ModeFlags | — |
key | ReadOnlySpan<byte> | — |
pathПуть файла контейнера; при Write существующее содержимое может быть потеряно до завершения настройки.
modeFlagsДля контейнера используйте только Read или Write; для CreateTemp это режим возвращаемого handle.
keyКлюч ровно 32 байта. Проверьте длину до открытия Write: native проверка происходит после открытия базового файла. Array/span не являются текстовым паролем.
FileAccessСобственный FileAccess либо null; ошибка Write не означает сохранность существовавшего файла.
public static FileAccess OpenEncrypted(string path, FileAccess.ModeFlags modeFlags, ReadOnlySpan<byte> key, ReadOnlySpan<byte> iV);Открывает собственный зашифрованный контейнер FileAccess с 32-байтным ключом; используйте только Read или Write. Критично для 1.0.0: базовый Write открывает/усекает назначение до проверки ключа. Неверная длина ключа может вернуть null/Error.InvalidParameter уже после потери прежнего содержимого; это воспроизведено на одноразовом файле. Проверяйте параметры до вызова и не записывайте поверх единственной ценной копии. Данные держатся в памяти до Close()/освобождения; Flush() не пишет готовый контейнер. IV при записи должен быть пустым для генерации либо 16 байт; при чтении используется IV из файла. Формат использует AES-CFB и MD5 данных, не отдельный проверенный authenticated-encryption протокол. Проверка безопасности и чтение с неверным ключом не выполнялись; roundtrip не доказывает стойкость. При null сразу проверяйте GetOpenError().
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
modeFlags | FileAccess.ModeFlags | — |
key | ReadOnlySpan<byte> | — |
iV | ReadOnlySpan<byte> | — |
pathПуть файла контейнера; при Write существующее содержимое может быть потеряно до завершения настройки.
modeFlagsДля контейнера используйте только Read или Write; для CreateTemp это режим возвращаемого handle.
keyКлюч ровно 32 байта. Проверьте длину до открытия Write: native проверка происходит после открытия базового файла. Array/span не являются текстовым паролем.
iVПри записи пустое значение включает генерацию IV; непустое должно иметь 16 байт. При чтении используется IV заголовка. Не переносите фиксированный QA-IV в производственную схему.
FileAccessСобственный FileAccess либо null; ошибка Write не означает сохранность существовавшего файла.
OpenEncryptedWithPassFileAccess
public static FileAccess OpenEncryptedWithPass(string path, FileAccess.ModeFlags modeFlags, string pass);Открывает тот же FileAccess encrypted-контейнер через пароль. Текущая native реализация строит ключ из 32 символов MD5-текста пароля; это не обещание современной password-KDF, соли или отдельной аутентификации. Используйте Read/Write, проверьте null и сразу GetOpenError(). Запись финализируется только при закрытии; Flush() оставляет данные в памяти. Базовый Write уже изменяет существующий файл до завершения настройки, поэтому ошибка открытия контейнера не гарантирует сохранность назначения. Успешный password roundtrip проверен; оценка безопасности не выполнялась.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
modeFlags | FileAccess.ModeFlags | — |
pass | string | — |
pathПуть файла контейнера; при Write существующее содержимое может быть потеряно до завершения настройки.
modeFlagsДля контейнера используйте только Read или Write; для CreateTemp это режим возвращаемого handle.
passПароль для текущего native формата; не сырые 32 байта ключа. Не храните реальный секрет в опубликованных примерах.
FileAccessСобственный FileAccess либо null; проверьте GetOpenError(), учитывая раннее изменение Write-назначения.
RemoveExtendedAttributeError
public static Error RemoveExtendedAttribute(string file, string attributeName);Удаляет одно именованное значение/поток, не сам файл и не все атрибуты. В Windows отсутствующее имя возвращает ошибку; не считайте операцию автоматически идемпотентной. Проверяйте Error и поддержку backend; пустое значение удаляется по имени так же, как непустое.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
attributeName | string | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
attributeNameНепустое имя в формате backend; Windows использует имя отдельного data stream. Не является путём основного файла.
ErrorError backend операции; проверяйте Ok, Unavailable и другие ошибки.
ResizeError
public Error Resize(long length);Меняет длину открытого записываемого файла в байтах. Перед вызовом после записи выполните Flush(): на Windows непрочищенный output buffer может восстановить старую длину даже после Ok от Resize(). Это воспроизведено. Проверяйте Error и итоговую длину; позицию для следующей операции задайте явно. Рост с нулевым заполнением проверен только на текущей Windows-файловой системе, не является общей гарантией backend.
| Имя | Тип | По умолчанию |
|---|---|---|
length | long | — |
lengthНовая неотрицательная длина в байтах; предварительно сбросьте output buffer.
ErrorError изменения длины; при буферизованной записи один Ok не подтверждает итоговую длину.
Seekvoid
public void Seek(ulong position);Устанавливает абсолютную позицию в байтах от начала открытого файла. Это не индекс символа и не усечение; перезапись короткими данными может оставить старый хвост. Результата Error нет; проверяйте допустимый диапазон заранее и результат последующего I/O. В Windows успешный seek очищает EOF indicator, но может не обновить прежний GetError().
| Имя | Тип | По умолчанию |
|---|---|---|
position | ulong | — |
positionНеотрицательное абсолютное смещение в байтах от начала открытого файла.
SeekEndvoid
public void SeekEnd(long position = 0);Перемещает позицию относительно конца файла в байтах. 0 ставит в конец для append, отрицательное значение — перед концом; не уходите до начала файла. Не создаёт файл и не меняет его режим. После ReadWrite для добавления вызовите SeekEnd(), а не считайте исходную позицию концом.
| Имя | Тип | По умолчанию |
|---|---|---|
position | long | 0 |
positionСмещение в байтах от конца; 0 для конца, отрицательное для позиции перед концом.
SetBigEndianvoid
public void SetBigEndian(bool bigEndian);Настройка порядка байтов числовых Get/Store операций данного handle; false — little-endian, true — big-endian. Новый Open() даёт новый handle со стандартным false: значение не сохраняется в файл как метаданные. Не переставляет байты GetBuffer/StoreBuffer или UTF-8 текста. У StoreVar/GetVar влияет на 32-битный префикс длины, но не на внутренний Variant payload; это проверено. Читатель и писатель должны договориться о формате.
| Имя | Тип | По умолчанию |
|---|---|---|
bigEndian | bool | — |
bigEndianTrue для big-endian числовых полей; false для little-endian. Не определяет формат автоматически.
SetExtendedAttribute2 перегрузки
public static Error SetExtendedAttribute(string file, string attributeName, byte[] data);Записывает именованные байты через backend; array/span overload задают одно содержимое. Windows создаёт/перезаписывает отдельный data stream, не основные байты файла. Проверяйте Error и поддержку файловой системой. Пустой массив может создать существующее имя с пустым значением; это не удаление — для удаления используйте RemoveExtendedAttribute().
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
attributeName | string | — |
data | byte[] | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
attributeNameНепустое имя в формате backend; Windows использует имя отдельного data stream. Не является путём основного файла.
dataБайты именованного значения; пустой буфер не означает удаление.
ErrorError backend операции; проверяйте Ok, Unavailable и другие ошибки.
public static Error SetExtendedAttribute(string file, string attributeName, ReadOnlySpan<byte> data);Записывает именованные байты через backend; array/span overload задают одно содержимое. Windows создаёт/перезаписывает отдельный data stream, не основные байты файла. Проверяйте Error и поддержку файловой системой. Пустой массив может создать существующее имя с пустым значением; это не удаление — для удаления используйте RemoveExtendedAttribute().
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
attributeName | string | — |
data | ReadOnlySpan<byte> | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
attributeNameНепустое имя в формате backend; Windows использует имя отдельного data stream. Не является путём основного файла.
dataБайты именованного значения; пустой буфер не означает удаление.
ErrorError backend операции; проверяйте Ok, Unavailable и другие ошибки.
SetExtendedAttributeStringError
public static Error SetExtendedAttributeString(string file, string attributeName, string data);Кодирует строку как UTF-8 и передаёт байты в backend атрибутов. Текущая реализация включает завершающий NUL; это подтверждено при чтении raw bytes в Windows. Для внешнего формата с точными байтами используйте SetExtendedAttribute() с явно выбранной кодировкой/терминатором. Проверяйте Error; это не запись в основной файл.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
attributeName | string | — |
data | string | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
attributeNameНепустое имя в формате backend; Windows использует имя отдельного data stream. Не является путём основного файла.
dataСтрока для UTF-8 записи; текущая реализация добавляет NUL к raw bytes.
ErrorError backend операции; проверяйте Ok, Unavailable и другие ошибки.
public static Error SetHiddenAttribute(string file, bool hidden);Меняет hidden-атрибут через backend; проверяйте возвращённый Error. На Windows меняется соответствующий бит с сохранением других атрибутов. Не создаёт файл и не защищает содержимое от чтения. Поддержка ОС/файловой системы и packed-ресурсов различается; unavailable/failure не следует считать успешной установкой.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
hidden | bool | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
hiddenTrue устанавливает hidden, false снимает; это не ограничение доступа.
ErrorError backend операции; проверяйте Ok, Unavailable и другие ошибки.
SetReadOnlyAttributeError
public static Error SetReadOnlyAttribute(string file, bool ro);Устанавливает/снимает backend read-only атрибут; в Windows меняет один бит, сохраняя остальные. Не эквивалентен настройке всех разрешений/ACL и не гарантирует обратную операцию при изменении прав окружения. Проверяйте Error; packed-данные могут быть недоступны для такой операции.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
ro | bool | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
roTrue устанавливает read-only атрибут, false снимает; не заменяет ACL.
ErrorError backend операции; проверяйте Ok, Unavailable и другие ошибки.
SetUnixPermissionsError
public static Error SetUnixPermissions(string file, FileAccess.UnixPermissionFlags permissions);Запрашивает изменение Unix permission bits. В проверенном Windows backend возвращает Error.Unavailable, не изменяя ACL. Packed-данные также недоступны для установки. Проверяйте Error; успешность другого атрибутного API не подтверждает поддержку chmod. Unix-платформы в этом проходе не выполнялись.
| Имя | Тип | По умолчанию |
|---|---|---|
file | string | — |
permissions | FileAccess.UnixPermissionFlags | — |
fileПуть конкретного файла/объекта; asset://, user:// или допустимый OS path с учётом поддержки backend.
permissionsUnix permission bits; Windows backend здесь возвращает Unavailable.
ErrorError backend операции; проверяйте Ok, Unavailable и другие ошибки.
Store16bool
public bool Store16(ushort value);Записывает беззнаковое 16-битное число ровно в 2 байт текущей позиции, без метки типа или длины. Порядок байтов задаёт BigEndian этого handle; по умолчанию little-endian. Читатель должен заранее знать формат и использовать Get16(). Проверяйте bool; запись не является атомарной и не гарантирует сброс на носитель.
| Имя | Тип | По умолчанию |
|---|---|---|
value | ushort | — |
valueБеззнаковое 16-битное значение. Проверяйте диапазон до явного преобразования из более широкого/знакового типа.
boolBool результата записи всех байт числа; не гарантия долговременного хранения.
Store32bool
public bool Store32(uint value);Записывает беззнаковое 32-битное число ровно в 4 байт текущей позиции, без метки типа или длины. Порядок байтов задаёт BigEndian этого handle; по умолчанию little-endian. Читатель должен заранее знать формат и использовать Get32(). Проверяйте bool; запись не является атомарной и не гарантирует сброс на носитель.
| Имя | Тип | По умолчанию |
|---|---|---|
value | uint | — |
valueБеззнаковое 32-битное значение. Проверяйте диапазон до явного преобразования из более широкого/знакового типа.
boolBool результата записи всех байт числа; не гарантия долговременного хранения.
Store64bool
public bool Store64(ulong value);Записывает беззнаковое 64-битное число ровно в 8 байт текущей позиции, без метки типа или длины. Порядок байтов задаёт BigEndian этого handle; по умолчанию little-endian. Читатель должен заранее знать формат и использовать Get64(). Проверяйте bool; запись не является атомарной и не гарантирует сброс на носитель.
| Имя | Тип | По умолчанию |
|---|---|---|
value | ulong | — |
valueБеззнаковое 64-битное значение. Проверяйте диапазон до явного преобразования из более широкого/знакового типа.
boolBool результата записи всех байт числа; не гарантия долговременного хранения.
Store8bool
public bool Store8(byte value);Записывает беззнаковое 8-битное число ровно в 1 байт текущей позиции, без метки типа или длины. Для одного байта BigEndian ничего не меняет. Читатель должен заранее знать формат и использовать Get8(). Проверяйте bool; запись не является атомарной и не гарантирует сброс на носитель.
| Имя | Тип | По умолчанию |
|---|---|---|
value | byte | — |
valueБеззнаковое 8-битное значение. Проверяйте диапазон до явного преобразования из более широкого/знакового типа.
boolBool результата записи всех байт числа; не гарантия долговременного хранения.
StoreBuffer2 перегрузки
public bool StoreBuffer(byte[] buffer);Записывает переданные байты с текущей позиции, без преобразования текста, размера или byte-order. Array/span overload выполняют ту же запись. Не создаёт родителей, не усекает оставшийся старый хвост и не обещает атомарность. Проверяйте bool и статус; для записи после чтения используйте подходящий ReadWrite/WriteRead режим.
| Имя | Тип | По умолчанию |
|---|---|---|
buffer | byte[] | — |
bufferБайты для записи целиком с текущей позиции; буфер не является сериализованным объектом автоматически.
boolBool результата записи всех переданных байт на уровне backend.
public bool StoreBuffer(ReadOnlySpan<byte> buffer);Записывает переданные байты с текущей позиции, без преобразования текста, размера или byte-order. Array/span overload выполняют ту же запись. Не создаёт родителей, не усекает оставшийся старый хвост и не обещает атомарность. Проверяйте bool и статус; для записи после чтения используйте подходящий ReadWrite/WriteRead режим.
| Имя | Тип | По умолчанию |
|---|---|---|
buffer | ReadOnlySpan<byte> | — |
bufferБайты для записи целиком с текущей позиции; буфер не является сериализованным объектом автоматически.
boolBool результата записи всех переданных байт на уровне backend.
StoreCsvLine2 перегрузки
public bool StoreCsvLine(ReadOnlySpan<string> values, string delim);Пишет CSV-запись и один LF. Поля с разделителем, кавычкой или LF заключаются в кавычки; кавычки удваиваются. В текущей реализации одиночный CR сам по себе не включает quoting: поле с CR может распасться на две записи при чтении, что воспроизведено. Если нужны переносы внутри поля, заранее нормализуйте CRLF/CR в LF; это меняет исходные переводы строк. Для парного GetCsvLine() используйте один разделитель, отличный от двойной кавычки. Array/span overloads имеют одинаковый формат; проверяйте bool.
| Имя | Тип | По умолчанию |
|---|---|---|
values | ReadOnlySpan<string> | — |
delim | string | — |
valuesПоля записи; CRLF/CR заранее нормализуйте при выбранной политике текста, иначе одиночный CR может сломать roundtrip.
delimОдин символ разделителя, отличный от двойной кавычки для парного чтения/записи. Не многосимвольная строка.
boolBool записи сформированной строки и LF; не подтверждает точный roundtrip одиночных CR.
public bool StoreCsvLine(string[] values, string delim = ",");Пишет CSV-запись и один LF. Поля с разделителем, кавычкой или LF заключаются в кавычки; кавычки удваиваются. В текущей реализации одиночный CR сам по себе не включает quoting: поле с CR может распасться на две записи при чтении, что воспроизведено. Если нужны переносы внутри поля, заранее нормализуйте CRLF/CR в LF; это меняет исходные переводы строк. Для парного GetCsvLine() используйте один разделитель, отличный от двойной кавычки. Array/span overloads имеют одинаковый формат; проверяйте bool.
| Имя | Тип | По умолчанию |
|---|---|---|
values | string[] | — |
delim | string | "," |
valuesПоля записи; CRLF/CR заранее нормализуйте при выбранной политике текста, иначе одиночный CR может сломать roundtrip.
delimОдин символ разделителя, отличный от двойной кавычки для парного чтения/записи. Не многосимвольная строка.
boolBool записи сформированной строки и LF; не подтверждает точный roundtrip одиночных CR.
StoreDoublebool
public bool StoreDouble(double value);Кодирует число как Double в 8 байт с выбранным BigEndian; без текстового представления или метки типа. Метод не проверяет конечность или допустимый диапазон для игровой логики. Используйте парный GetDouble() с тем же форматом; проверяйте bool записи.
| Имя | Тип | По умолчанию |
|---|---|---|
value | double | — |
valueЧисло для выбранной двоичной точности; допустимость для вашей модели данных проверяется вызывающим.
boolBool результата кодирования/записи на уровне backend.
StoreFloatbool
public bool StoreFloat(float value);Кодирует число как Float в 4 байт с выбранным BigEndian; без текстового представления или метки типа. Метод не проверяет конечность или допустимый диапазон для игровой логики. Используйте парный GetFloat() с тем же форматом; проверяйте bool записи.
| Имя | Тип | По умолчанию |
|---|---|---|
value | float | — |
valueЧисло для выбранной двоичной точности; допустимость для вашей модели данных проверяется вызывающим.
boolBool результата кодирования/записи на уровне backend.
StoreHalfbool
public bool StoreHalf(float value);Кодирует число как Half в 2 байт с выбранным BigEndian; без текстового представления или метки типа. Half теряет точность исходного float: это 16-битное хранение, не 32-битное. Используйте парный GetHalf() с тем же форматом; проверяйте bool записи.
| Имя | Тип | По умолчанию |
|---|---|---|
value | float | — |
valueЧисло для выбранной двоичной точности; допустимость для вашей модели данных проверяется вызывающим.
boolBool результата кодирования/записи на уровне backend.
StoreLinebool
public bool StoreLine(string line);Записывает строку как UTF-8 и добавляет один LF (байт 0x0A), не платформенный CRLF. Существующий перевод строки в аргументе не удаляется. Возвращает bool общего результата; позиция растёт на число UTF-8 байт плюс LF. Правила перезаписи и сохранности те же, что у StoreString().
| Имя | Тип | По умолчанию |
|---|---|---|
line | string | — |
lineТекст строки; метод дополнительно запишет один LF.
boolTrue только при успешной записи строки и добавленного LF на уровне backend.
StorePascalStringbool
public bool StorePascalString(string @string);Пишет 32-битную длину UTF-8 в байтах, затем сами байты строки. Это не однобайтовый Pascal length и не число C# символов. Префикс использует BigEndian; payload остаётся UTF-8. Читайте через GetPascalString() с тем же порядком байтов и заранее установленным пределом записи; проверяйте bool.
| Имя | Тип | По умолчанию |
|---|---|---|
string | string | — |
stringТекст для UTF-8; префикс содержит размер кодировки, не string.Length.
boolBool общего результата записи длины и UTF-8 байт.
StoreRealbool
public bool StoreReal(float value);Ширина записи native real зависит от precision сборки: исходники выбирают StoreFloat или StoreDouble по sizeof(real_t). В установленном build подтверждены 4 байта; другая precision здесь не проверена. Для внешнего формата с постоянной шириной выберите StoreFloat()/StoreDouble() явно. BigEndian учитывается; bool не подтверждает сохранность на носителе.
| Имя | Тип | По умолчанию |
|---|---|---|
value | float | — |
valueЧисло в типе real текущего SDK; не поле с автоматически переносимой точностью.
boolBool записи native real выбранной сборкой.
StoreStringbool
public bool StoreString(string @string);Записывает UTF-8 байты строки с текущей позиции, без автоматического LF или длины. Позиция измеряется в байтах. Не усекает старый хвост при короткой перезаписи; выберите Write/WriteRead либо контролируемое Resize(). Проверяйте bool и GetError(); true не гарантирует сброс на носитель или атомарное сохранение.
| Имя | Тип | По умолчанию |
|---|---|---|
string | string | — |
stringТекст для UTF-8 записи без автоматического перевода строки.
boolBool результата записи; не гарантия долговременного хранения.
StoreVarbool
public bool StoreVar(Variant value, bool fullObjects = false);Сериализует Variant в native binary payload и записывает 32-битную длину перед ним. Это формат пары StoreVar/GetVar, не JSON, не префаб и не снимок всего уровня. BigEndian меняет префикс длины, не внутренние байты payload. По умолчанию fullObjects=false; полная объектная сериализация не выполнялась. Метод не забирает владение входным Variant. Для сохранений задайте собственную версию и схему, проверяйте bool записи и типы при загрузке.
| Имя | Тип | По умолчанию |
|---|---|---|
value | Variant | — |
fullObjects | bool | false |
valueVariant для записи; владение остаётся у вызывающего. Ссылки на игровые объекты не становятся постоянными ID автоматически.
fullObjectsПо умолчанию false. True включает полное представление объектов, не автоматическое сохранение уровня; этот режим здесь не проверен.
boolBool записи длины и Variant payload; не гарантия атомарного сохранения или совместимости схем.
FileAccess.CompressionMode
| Значение | Описание |
|---|---|
Brotli = 4 | Использует метод сжатия brotli (поддерживается только распаковка). |
Deflate = 1 | Использует метод сжатия DEFLATE(https://en.wikipedia.org/wiki/DEFLATE). |
Fastlz = 0 | Использует метод сжатия FastLZ(https://fastlz.org/). |
GZip = 3 | Использует метод сжатия gzip. |
Zstd = 2 | Использует метод сжатия Zstandard(https://facebook.github.io/zstd/). |
FileAccess.ModeFlags
| Значение | Описание |
|---|---|
Read = 1 | Открывает файл для чтения. Курсор файла устанавливается в начало файла. ПИСЬ |
ReadWrite = 3 | Открывает файл для чтения и записи. Не обрезает файл. Курсор файла устанавливается в начало файла. |
Write = 2 | Открывает файл для операций записи. Если файл существует, он усекается до нулевой длины, а его содержимое очищается. В противном случае он создается.
Примечание: При создании файла он должен находиться в уже существующем каталоге. Для рекурсивного создания каталогов для пути к файлу см. ЧИТАЙТЕ |
WriteRead = 7 | Открывает файл для операций чтения и записи. Если файл существует, он обрезается до нулевой длины, а его содержимое очищается. В противном случае он создается. Курсор файла располагается в начале файла.
Примечание: При создании файла он должен находиться в уже существующем каталоге. Для рекурсивного создания каталогов для пути к файлу см. |
FileAccess.UnixPermissionFlags
| Значение | Описание |
|---|---|
ExecuteGroup = 8 | Выполнить для группового бита. |
ExecuteOther = 1 | Выполнить для другого бита. |
ExecuteOwner = 64 | Выполнить для владельца бита. |
ReadGroup = 32 | Прочитайте для группового бита. |
ReadOther = 4 | Прочтите другой бит. |
ReadOwner = 256 | Прочитайте информацию о владельце. |
RestrictedDelete = 512 | Бит ограниченного удаления (прикрепленный). |
SetGroupId = 1024 | Установить идентификатор группы при выполнении бита. |
SetUserId = 2048 | Установить идентификатор пользователя при выполнении бита. |
WriteGroup = 16 | Пишите для группового бита. |
WriteOther = 2 | Напишите для другого бита. |
WriteOwner = 128 | Напишите для владельца бита. |