FileAccess
Наследует: RefCounted < Object
Предоставляет методы для операций чтения и записи файлов.
Описание
Этот класс можно использовать для постоянного хранения данных в файловой системе пользовательского устройства и для чтения из неё. Это полезно для хранения сохраненных данных игры или файлов конфигурации игрока.
Пример: Как записать и прочитать файл. Файл с именем "save_game.dat" будет сохранён в папке пользовательских данных, как указано в документации Пути к данным:
func save_to_file(content):
var file = FileAccess.open("user://save_game.dat", FileAccess.WRITE)
file.store_string(content)
func load_from_file():
var file = FileAccess.open("user://save_game.dat", FileAccess.READ)
var content = file.get_as_text()
return content
public void SaveToFile(string content)
{
using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Write);
file.StoreString(content);
}
public string LoadFromFile()
{
using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Read);
string content = file.GetAsText();
return content;
}
Экземпляр FileAccess имеет собственный файловый курсор, который представляет собой позицию в байтах в файле, где будет выполнена следующая операция чтения/записи. Такие функции, как get_8(), get_16(), store_8() и store_16(), перемещают файловый курсор вперёд на количество прочитанных/записанных байтов. Файловый курсор можно переместить в определённую позицию с помощью seek() или seek_end(), а его позицию можно получить с помощью get_position().
Экземпляр FileAccess закрывает свой файл при освобождении. Поскольку он наследует RefCounted, это происходит автоматически, когда файл больше не используется. Для его более раннего закрытия можно вызвать close(). В C# ссылку необходимо удалить вручную, что можно сделать с помощью оператора using или путём прямого вызова метода Dispose.
Примечание: Для доступа к ресурсам проекта после экспорта рекомендуется использовать ResourceLoader вместо FileAccess, поскольку некоторые файлы преобразуются в форматы, специфичные для движка, и их исходные файлы могут отсутствовать в экспортированном пакете PCK. При использовании FileAccess убедитесь, что файл включён в экспорт, изменив его режим импорта на Сохранить файл (экспортируется как есть) в панели импорта, или, для файлов, для которых этот параметр недоступен, измените фильтр экспорта без ресурсов в диалоговом окне экспорта, включив расширение файла (например, *.txt).
Примечание: Файлы автоматически закрываются только при «нормальном» завершении процесса (например, нажатием кнопки закрытия в менеджере окон или сочетанием клавиш Alt + F4). Если остановить выполнение проекта, нажав F8 во время его работы, файл не будет закрыт, так как игровой процесс будет завершён. Эту проблему можно обойти, регулярно вызывая flush().
Обучающие материалы
Свойства
Методы
Перечисления
enum ModeFlags: 🔗
ModeFlags READ = 1
Открывает файл для чтения. Курсор файла устанавливается в начало файла.
ModeFlags WRITE = 2
Открывает файл для операций записи. Файл создается, если он не существует, и усекается, если существует.
Примечание: При создании файла он должен находиться в уже существующем каталоге. Чтобы рекурсивно создать каталоги для пути к файлу, см. DirAccess.make_dir_recursive().
ModeFlags READ_WRITE = 3
Открывает файл для чтения и записи. Не обрезает файл. Курсор файла устанавливается в начало файла.
ModeFlags WRITE_READ = 7
Открывает файл для чтения и записи. Файл создаётся, если он не существует, и усекается, если существует. Файловый курсор устанавливается в начало файла.
Примечание: При создании файла он должен находиться в уже существующем каталоге. Чтобы рекурсивно создать каталоги для пути к файлу, см. DirAccess.make_dir_recursive().
enum CompressionMode: 🔗
CompressionMode COMPRESSION_FASTLZ = 0
Использует метод сжатия FastLZ.
CompressionMode COMPRESSION_DEFLATE = 1
Использует метод сжатия DEFLATE.
CompressionMode COMPRESSION_ZSTD = 2
Использует метод сжатия Zstandard.
CompressionMode COMPRESSION_GZIP = 3
Использует метод сжатия gzip.
CompressionMode COMPRESSION_BROTLI = 4
Использует метод сжатия brotli (поддерживается только распаковка).
flags UnixPermissionFlags: 🔗
UnixPermissionFlags UNIX_READ_OWNER = 256
Прочитайте информацию о владельце.
UnixPermissionFlags UNIX_WRITE_OWNER = 128
Напишите для владельца бита.
UnixPermissionFlags UNIX_EXECUTE_OWNER = 64
Выполнить для владельца бита.
UnixPermissionFlags UNIX_READ_GROUP = 32
Прочитайте для группового бита.
UnixPermissionFlags UNIX_WRITE_GROUP = 16
Пишите для группового бита.
UnixPermissionFlags UNIX_EXECUTE_GROUP = 8
Выполнить для группового бита.
UnixPermissionFlags UNIX_READ_OTHER = 4
Прочтите другой бит.
UnixPermissionFlags UNIX_WRITE_OTHER = 2
Напишите для другого бита.
UnixPermissionFlags UNIX_EXECUTE_OTHER = 1
Выполнить для другого бита.
UnixPermissionFlags UNIX_SET_USER_ID = 2048
Установить идентификатор пользователя при выполнении бита.
UnixPermissionFlags UNIX_SET_GROUP_ID = 1024
Установить идентификатор группы при выполнении бита.
UnixPermissionFlags UNIX_RESTRICTED_DELETE = 512
Бит ограниченного удаления (прикрепленный).
Описания свойств
Если true, файл читается с big-endian порядком байтов. Если false, файл читается с little-endian порядком байтов. Если сомневаетесь, оставьте это false, так как большинство файлов записываются с little-endian порядком байтов.
Примечание: Это всегда сбрасывается на системный порядок байтов, который является little-endian на всех поддерживаемых платформах, всякий раз, когда вы открываете файл. Поэтому вы должны установить big_endian после открытия файла, а не до.
Описания метода
void close() 🔗
Закрывает текущий открытый файл и предотвращает последующие операции чтения/записи. Используйте flush(), чтобы сохранить данные на диске без закрытия файла.
Примечание: FileAccess автоматически закроется при освобождении, что происходит, когда он выходит из области действия или когда ему присваивается null. В C# ссылка должна быть удалена после того, как мы закончим ее использовать, это можно сделать с помощью оператора using или вызова метода Dispose напрямую.
FileAccess create_temp(mode_flags: int, prefix: String = "", extension: String = "", keep: bool = false) static 🔗
Создает временный файл. Этот файл будет освобожден при освобождении возвращенного FileAccess.
Если prefix не пуст, он будет добавлен к имени файла, разделенному -.
Если extension не пуст, он будет добавлен к имени временного файла.
Если keep равен true, файл не удаляется при освобождении возвращенного FileAccess.
Возвращает null, если открытие файла не удалось. Вы можете использовать get_open_error(), чтобы проверить возникшую ошибку.
Возвращает true, если файловый курсор уже прочитал за пределами конца файла.
Примечание: eof_reached() == false нельзя использовать для проверки наличия дополнительных данных. Чтобы выполнить цикл, пока есть дополнительные данные, используйте:
while file.get_position() < file.get_length():
# Read data
while (file.GetPosition() < file.GetLength())
{
// Read data
}
bool file_exists(path: String) static 🔗
Возвращает true, если файл существует по указанному пути.
Примечание: Импортируются многие типы ресурсов (например, текстуры или звуковые файлы), и их исходный ресурс не будет включен в экспортированную игру, поскольку используется только импортированная версия. См. ResourceLoader.exists() для альтернативного подхода, который учитывает переназначение ресурсов.
Для нестатического, относительного эквивалента используйте DirAccess.file_exists().
void flush() 🔗
Записывает буфер файла на диск. Сброс выполняется автоматически при закрытии файла. Это означает, что вам не нужно вызывать flush() вручную перед закрытием файла. Тем не менее, вызов flush() может использоваться для обеспечения безопасности данных, даже если проект аварийно завершится, а не будет закрыт корректно.
Примечание: Вызывайте flush() только тогда, когда это действительно нужно. В противном случае это снизит производительность из-за постоянной записи на диск.
Возвращает следующие 8 бит из файла в виде целого числа. Это перемещает курсор файла на 1 байт. Подробнее о том, какие значения можно сохранять и извлекать таким способом, см. в store_8().
Возвращает следующие 16 бит из файла в виде целого числа. Это перемещает курсор файла на 2 байта вперёд. Подробнее о том, какие значения можно сохранять и извлекать таким способом, см. в store_16().
Возвращает следующие 32 бита из файла в виде целого числа. Это перемещает курсор файла на 4 байта вперёд. Подробнее о том, какие значения можно сохранять и извлекать таким способом, см. в store_32().
Возвращает следующие 64 бита из файла в виде целого числа. Это перемещает курсор файла на 8 байт. Подробнее о том, какие значения можно сохранять и извлекать таким способом, см. в store_64().
int get_access_time(file: String) static 🔗
Возвращает время последнего доступа к file в формате временной метки Unix или 0 при ошибке. Эту временную метку Unix можно преобразовать в другой формат с помощью синглтона Time.
String get_as_text(skip_cr: bool = false) const 🔗
Возвращает весь файл как String. Текст интерпретируется как текст в кодировке UTF-8. При этом файловый курсор игнорируется и не влияет на него.
Если skip_cr равен true, символы возврата каретки (\r, CR) будут игнорироваться при анализе UTF-8, поэтому только символы перевода строки (\n, LF) будут представлять новую строку (согласно соглашениям Unix).
PackedByteArray get_buffer(length: int) const 🔗
Возвращает следующие length байтов файла в виде PackedByteArray. Это перемещает курсор файла на length байтов.
PackedStringArray get_csv_line(delim: String = ",") const 🔗
Возвращает следующее значение файла в формате CSV (значения, разделенные запятыми). Вы можете указать другой разделитель delim, отличный от используемого по умолчанию "," (запятая). Этот разделитель должен быть длиной в один символ и не может быть двойными кавычками.
Текст интерпретируется как текст в кодировке UTF-8. Текстовые значения должны быть заключены в двойные кавычки, если они содержат символ-разделитель. Двойные кавычки в текстовом значении можно экранировать, удваивая их вхождение. Это переместит курсор файла на позицию после символа новой строки в конце строки.
Например, следующие строки CSV-файла являются допустимыми и будут корректно обработаны как две строки каждая:
Alice,"Hello, Bob!"
Bob,Alice! What a surprise!
Alice,"I thought you'd reply with ""Hello, world""."
Обратите внимание, что во второй строке можно опустить кавычки, поскольку она не содержит разделителя. Однако можно использовать кавычки, поскольку код был написан без них только в демонстрационных целях. В третьей строке необходимо использовать "" для каждой кавычки, которая должна интерпретироваться как таковая, а не как конец текстового значения.
Возвращает следующие 64 бита файла в виде числа с плавающей запятой. Это перемещает курсор файла на 8 байт.
Возвращает последнюю ошибку, которая произошла при попытке выполнить операции. Сравните с константами ERR_FILE_* из Error.
PackedByteArray get_file_as_bytes(path: String) static 🔗
Возвращает все содержимое файла path как PackedByteArray без какого-либо декодирования.
Возвращает пустой PackedByteArray, если при открытии файла произошла ошибка. Вы можете использовать get_open_error(), чтобы проверить возникшую ошибку.
String get_file_as_string(path: String) static 🔗
Возвращает все содержимое файла path как String. Текст интерпретируется как закодированный в UTF-8.
Возвращает пустую String, если при открытии файла произошла ошибка. Вы можете использовать get_open_error(), чтобы проверить произошедшую ошибку.
Возвращает следующие 32 бита файла в виде числа с плавающей запятой. Это перемещает курсор файла на 4 байта вперёд.
Возвращает следующие 16 бит из файла как число с плавающей запятой половинной точности. Это перемещает курсор файла на 2 байта вперёд.
Возвращает true, если установлен атрибут файла hidden.
Примечание: Этот метод реализован в iOS, BSD, macOS и Windows.
Возвращает размер файла в байтах. Для канала возвращает количество байтов, доступных для чтения из канала.
Возвращает следующую строку файла как String. Возвращаемая строка не содержит символов перевода строки (\n) или возврата каретки (\r), но содержит любые другие начальные или конечные пробелы. Это перемещает файловый курсор в положение после символа перевода строки в конце строки.
Текст интерпретируется как текст в кодировке UTF-8.
String get_md5(path: String) static 🔗
Возвращает строку MD5, представляющую файл по указанному пути, или пустую String в случае возникновения ошибки.
int get_modified_time(file: String) static 🔗
Возвращает время последнего изменения file в формате временной метки Unix или 0 в случае ошибки. Эту временную метку Unix можно преобразовать в другой формат с помощью синглтона Time.
Error get_open_error() static 🔗
Возвращает результат последнего вызова open() в текущем потоке.
Возвращает String, сохранённую в формате Pascal из файла. Это означает, что длина строки явно сохраняется в начале. См. store_pascal_string(). Она может включать символы новой строки. Курсор файла перемещается после считывания байтов.
Текст интерпретируется как имеющий кодировку UTF-8.
Возвращает путь в виде String для текущего открытого файла.
String get_path_absolute() const 🔗
Возвращает абсолютный путь в виде String для текущего открытого файла.
Возвращает позицию файлового курсора в байтах от начала файла. Это файловый курсор чтения/записи, установленный методом seek() или seek_end() и перемещаемый операциями чтения/записи.
bool get_read_only_attribute(file: String) static 🔗
Возвращает true, если установлен атрибут файла read only.
Примечание: Этот метод реализован в iOS, BSD, macOS и Windows.
Возвращает следующие биты из файла в виде числа с плавающей точкой. Это перемещает файловый курсор на 4 или 8 байтов, в зависимости от точности, используемой сборкой Godot, сохранившей файл.
Если файл был сохранён сборкой Godot, скомпилированной с опцией precision=single (по умолчанию), количество считанных битов для этого файла равно 32. В противном случае, если файл скомпилирован с опцией precision=double, количество считанных битов равно 64.
String get_sha256(path: String) static 🔗
Возвращает SHA-256 String, представляющую файл по указанному пути, или пустую String в случае возникновения ошибки.
int get_size(file: String) static 🔗
Возвращает размер файла в байтах или -1 в случае ошибки.
BitField[UnixPermissionFlags] get_unix_permissions(file: String) static 🔗
Возвращает разрешения UNIX для файла.
Примечание: Этот метод реализован в iOS, Linux/BSD и macOS.
Variant get_var(allow_objects: bool = false) const 🔗
Возвращает следующее значение Variant из файла. Если allow_objects равен true, декодирование объектов разрешено. Это перемещает файловый курсор на количество прочитанных байтов.
Внутри используется тот же механизм декодирования, что и метод @GlobalScope.bytes_to_var(), описанный в документации API двоичной сериализации.
Предупреждение: Десериализованные объекты могут содержать код, который будет выполнен. Не используйте этот параметр, если сериализованный объект получен из ненадежных источников, чтобы избежать потенциальных угроз безопасности, таких как удалённое выполнение кода.
Возвращает true, если файл в данный момент открыт.
FileAccess open(path: String, flags: ModeFlags) static 🔗
Создает новый объект FileAccess и открывает файл для записи или чтения в зависимости от флагов.
Возвращает null, если открытие файла не удалось. Вы можете использовать get_open_error(), чтобы проверить возникшую ошибку.
FileAccess open_compressed(path: String, mode_flags: ModeFlags, compression_mode: CompressionMode = 0) static 🔗
Создает новый объект FileAccess и открывает сжатый файл для чтения или записи.
Примечание: open_compressed() может читать только файлы, сохраненные Godot, а не сторонние форматы сжатия. См. проблему GitHub № 28999 для обходного пути.
Возвращает null, если открытие файла не удалось. Вы можете использовать get_open_error(), чтобы проверить возникшую ошибку.
FileAccess open_encrypted(path: String, mode_flags: ModeFlags, key: PackedByteArray, iv: PackedByteArray = PackedByteArray()) static 🔗
Создает новый объект FileAccess и открывает зашифрованный файл в режиме записи или чтения. Вам необходимо передать двоичный ключ для его шифрования/расшифровки.
Примечание: Предоставленный ключ должен быть длиной 32 байта.
Возвращает null, если открытие файла не удалось. Вы можете использовать get_open_error(), чтобы проверить возникшую ошибку.
FileAccess open_encrypted_with_pass(path: String, mode_flags: ModeFlags, pass: String) static 🔗
Создает новый объект FileAccess и открывает зашифрованный файл в режиме записи или чтения. Вам необходимо передать пароль для его шифрования/расшифровки.
Возвращает null, если открытие файла не удалось. Вы можете использовать get_open_error(), чтобы проверить возникшую ошибку.
Изменяет размер файла до указанной длины. Файл должен быть открыт в режиме, разрешающем запись. Если файл расширен, добавляются символы NUL. Если файл усечен, все данные от конечного файла до исходной длины файла теряются.
Изменяет курсор чтения/записи файла на указанную позицию (в байтах от начала файла). Это изменяет значение, возвращаемое методом get_position().
void seek_end(position: int = 0) 🔗
Изменяет курсор чтения/записи файла на указанную позицию (в байтах от конца файла). Это изменяет значение, возвращаемое методом get_position().
Примечание: Это смещение, поэтому следует использовать отрицательные числа, иначе курсор файла окажется в конце файла.
Устанавливает атрибут файла hidden.
Примечание: Этот метод реализован в iOS, BSD, macOS и Windows.
Error set_read_only_attribute(file: String, ro: bool) static 🔗
Устанавливает атрибут файла read only.
Примечание: Этот метод реализован в iOS, BSD, macOS и Windows.
Error set_unix_permissions(file: String, permissions: BitField[UnixPermissionFlags]) static 🔗
Устанавливает права доступа UNIX к файлам.
Примечание: Этот метод реализован в iOS, Linux/BSD и macOS.
Сохраняет целое число в файле в виде 8 бит. Это перемещает курсор файла на 1 байт. Возвращает true в случае успешного выполнения операции.
Примечание: Значение value должно находиться в интервале [0, 255]. Любое другое значение приведёт к переполнению и циклическому переносу.
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
Чтобы сохранить знаковое целое число, используйте store_64() или преобразуйте его вручную (см. пример в store_16()).
Сохраняет целое число в файле в виде 16 бит. Это перемещает файловый курсор на 2 байта вперёд. Возвращает true в случае успешного выполнения операции.
Примечание: Значение value должно находиться в интервале [0, 2^16 - 1]. Любое другое значение приведёт к переполнению и циклическому переносу.
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
Для сохранения знакового целого числа используйте store_64() или сохраните знаковое целое число из интервала [-2^15, 2^15 - 1] (т.е. сохранив один бит для знака) и вручную вычисляйте его знак при чтении. Например:
const MAX_15B = 1 << 15
const MAX_16B = 1 << 16
func unsigned16_to_signed(unsigned):
return (unsigned + MAX_15B) % MAX_16B - MAX_15B
func _ready():
var f = FileAccess.open("user://file.dat", FileAccess.WRITE_READ)
f.store_16(-42) # Это округляет и сохраняет 65494 (2^16 - 42).
f.store_16(121) # В пределах границ будет храниться 121.
f.seek(0) # Вернитесь в начало, чтобы прочитать сохраненное значение.
var read1 = f.get_16() # 65494
var read2 = f.get_16() # 121
var converted1 = unsigned16_to_signed(read1) # -42
var converted2 = unsigned16_to_signed(read2) # 121
public override void _Ready()
{
using var f = FileAccess.Open("user://file.dat", FileAccess.ModeFlags.WriteRead);
f.Store16(unchecked((ushort)-42)); // Это округляет и сохраняет 65494 (2^16 - 42).
f.Store16(121); // В пределах границ будет храниться 121.
f.Seek(0); // Вернитесь в начало, чтобы прочитать сохраненное значение.
ushort read1 = f.Get16(); // 65494
ushort read2 = f.Get16(); // 121
short converted1 = (short)read1; // -42
short converted2 = (short)read2; // 121
}
Сохраняет целое число в файле в виде 32 бит. Это перемещает файловый курсор на 4 байта. Возвращает true в случае успешного выполнения операции.
Примечание: Значение value должно находиться в интервале [0, 2^32 - 1]. Любое другое значение приведёт к переполнению и циклическому переносу.
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
Чтобы сохранить знаковое целое число, используйте store_64() или преобразуйте его вручную (см. пример в store_16()).
Сохраняет целое число в файле в виде 64 бит. Это перемещает файловый курсор на 8 байт. Возвращает true в случае успешного выполнения операции.
Примечание: Значение value должно находиться в интервале [-2^63, 2^63 - 1] (т.е. быть допустимым значением int).
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
bool store_buffer(buffer: PackedByteArray) 🔗
Сохраняет заданный массив байтов в файле. Это перемещает файловый курсор на количество записанных байтов. Возвращает true в случае успешного выполнения операции.
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
bool store_csv_line(values: PackedStringArray, delim: String = ",") 🔗
Сохраните заданный PackedStringArray в файле как строку, отформатированную в формате CSV (значения, разделенные запятыми). Вы можете передать другой разделитель delim, отличный от используемого по умолчанию "," (запятая). Этот разделитель должен быть длиной в один символ.
Текст будет закодирован в формате UTF-8. Возвращает true в случае успешного выполнения операции.
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
bool store_double(value: float) 🔗
Сохраняет число с плавающей запятой в файле в виде 64 бит. Это перемещает файловый курсор на 8 байт. Возвращает true в случае успешного выполнения операции.
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
bool store_float(value: float) 🔗
Сохраняет число с плавающей запятой в файле в виде 32 бит. Это перемещает файловый курсор на 4 байта. Возвращает true в случае успешного выполнения операции.
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
bool store_half(value: float) 🔗
Сохраняет в файле число с плавающей запятой половинной точности (half-precision) в виде 16 бит. Это перемещает файловый курсор на 2 байта. Возвращает true в случае успешного выполнения операции.
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
bool store_line(line: String) 🔗
Сохраняет в файле line, за которым следует символ новой строки (\n), кодируя текст в формате UTF-8. Это перемещает файловый курсор на длину строки после символа новой строки. Количество записанных байтов зависит от количества байтов в кодировке UTF-8, которое может отличаться от String.length(), который подсчитывает количество кодовых точек UTF-32. Возвращает true в случае успешного выполнения операции.
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
bool store_pascal_string(string: String) 🔗
Сохраняет заданную String как строку в файле в формате Pascal (т.е. также сохраняет длину строки). Текст будет закодирован в UTF-8. Это перемещает файловый курсор на количество записанных байтов в зависимости от кодировки UTF-8, которая может отличаться от String.length(), который подсчитывает количество кодовых точек UTF-32. Возвращает true в случае успешного выполнения операции.
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
bool store_real(value: float) 🔗
Сохраняет число с плавающей точкой в файле. Это перемещает файловый курсор на 4 или 8 байтов, в зависимости от точности, используемой текущей сборкой Godot.
Если используется сборка Godot, скомпилированная с опцией precision=single (по умолчанию), этот метод сохранит 32-битное число с плавающей точкой. В противном случае, если скомпилировано с опцией precision=double, этот метод сохранит 64-битное число с плавающей точкой. Возвращает true в случае успешного выполнения операции.
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
bool store_string(string: String) 🔗
Сохраняет string в файле без символа новой строки (\n), кодируя текст в формате UTF-8. Это перемещает курсор файла на длину строки в байтах в кодировке UTF-8, которая может отличаться от String.length(), который подсчитывает количество кодовых точек UTF-32. Возвращает true в случае успешного выполнения операции.
Примечание: Этот метод предназначен для записи текстовых файлов. Строка хранится в виде буфера в кодировке UTF-8 без указания длины строки и завершающего нуля, что затрудняет её обратную загрузку. Если вы хотите сохранить извлекаемую строку в двоичном файле, рассмотрите возможность использования store_pascal_string(). Для извлечения строк из текстового файла можно использовать метод get_buffer(length).get_string_from_utf8() (если известна длина) или get_as_text().
Примечание: В случае ошибки результирующее значение индикатора позиции файла не определено.
bool store_var(value: Variant, full_objects: bool = false) 🔗
Сохраняет любое значение Variant в файле. Если full_objects равен true, кодирование объектов разрешено (и потенциально может включать код). Это перемещает курсор файла на количество записанных байтов. Возвращает true в случае успешного выполнения операции.
Внутри используется тот же механизм кодирования, что и метод @GlobalScope.var_to_bytes(), как описано в документации API двоичной сериализации.
Примечание: Включены не все свойства. Сериализуются только свойства, настроенные с установленным флагом @GlobalScope.PROPERTY_USAGE_STORAGE. Вы можете добавить новый флаг использования к свойству, переопределив метод Object._get_property_list() в вашем классе. Вы также можете проверить, как настроено использование свойств, вызвав Object._get_property_list(). Возможные флаги использования см. в PropertyUsageFlags.
Примечание: В случае ошибки результирующее значение индикатора положения файла не определено.