Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

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

Екземпляр 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() через регулярні проміжки часу.

Посібники

Властивості

bool

big_endian

Методи

void

close()

FileAccess

create_temp(mode_flags: ModeFlags, prefix: String = "", extension: String = "", keep: bool = false) static

bool

eof_reached() const

bool

file_exists(path: String) static

void

flush()

int

get_8() const

int

get_16() const

int

get_32() const

int

get_64() const

int

get_access_time(file: String) static

String

get_as_text() const

PackedByteArray

get_buffer(length: int) const

PackedStringArray

get_csv_line(delim: String = ",") const

float

get_double() const

Error

get_error() const

PackedByteArray

get_extended_attribute(file: String, attribute_name: String) static

String

get_extended_attribute_string(file: String, attribute_name: String) static

PackedStringArray

get_extended_attributes_list(file: String) static

PackedByteArray

get_file_as_bytes(path: String) static

String

get_file_as_string(path: String) static

float

get_float() const

float

get_half() const

bool

get_hidden_attribute(file: String) static

int

get_length() const

String

get_line() const

String

get_md5(path: String) static

int

get_modified_time(file: String) static

Error

get_open_error() static

String

get_pascal_string()

String

get_path() const

String

get_path_absolute() const

int

get_position() const

bool

get_read_only_attribute(file: String) static

float

get_real() const

String

get_sha256(path: String) static

int

get_size(file: String) static

BitField[UnixPermissionFlags]

get_unix_permissions(file: String) static

Variant

get_var(allow_objects: bool = false) const

bool

is_open() const

FileAccess

open(path: String, flags: ModeFlags) static

FileAccess

open_compressed(path: String, mode_flags: ModeFlags, compression_mode: CompressionMode = 0) static

FileAccess

open_encrypted(path: String, mode_flags: ModeFlags, key: PackedByteArray, iv: PackedByteArray = PackedByteArray()) static

FileAccess

open_encrypted_with_pass(path: String, mode_flags: ModeFlags, pass: String) static

Error

remove_extended_attribute(file: String, attribute_name: String) static

Error

resize(length: int)

void

seek(position: int)

void

seek_end(position: int = 0)

Error

set_extended_attribute(file: String, attribute_name: String, data: PackedByteArray) static

Error

set_extended_attribute_string(file: String, attribute_name: String, data: String) static

Error

set_hidden_attribute(file: String, hidden: bool) static

Error

set_read_only_attribute(file: String, ro: bool) static

Error

set_unix_permissions(file: String, permissions: BitField[UnixPermissionFlags]) static

bool

store_8(value: int)

bool

store_16(value: int)

bool

store_32(value: int)

bool

store_64(value: int)

bool

store_buffer(buffer: PackedByteArray)

bool

store_csv_line(values: PackedStringArray, delim: String = ",")

bool

store_double(value: float)

bool

store_float(value: float)

bool

store_half(value: float)

bool

store_line(line: String)

bool

store_pascal_string(string: String)

bool

store_real(value: float)

bool

store_string(string: String)

bool

store_var(value: Variant, full_objects: bool = false)


Переліки

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 (тільки Decompression підтримується).


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

Встановити групу id на виконання біт.

UnixPermissionFlags UNIX_RESTRICTED_DELETE = 512

Обмеження видалення (пригарний) біт.


Описи властивостей

bool big_endian 🔗

  • void set_big_endian(value: bool)

  • bool is_big_endian()

Якщо true, файл читається з порядком байтів big-endian endianness. Якщо false, файл читається з порядком байтів little-endian. Якщо є сумніви, залиште це значення false, оскільки більшість файлів записуються з порядком байтів little-endian.

Примітка: Це завжди скидається до системного порядка байтів, який є little-endian на всіх підтримуваних платформах, щоразу, коли ви відкриваєте файл. Тому ви повинні встановити big_endian після відкриття файлу, а не до.


Описи методів

void close() 🔗

Закриває поточний відкритий файл і запобігає подальшим операціям читання/запису. Використовуйте flush(), щоб зберегти дані на диску, не закриваючи файл.

Примітка: FileAccess автоматично закриється, коли його буде звільнено, що станеться, коли він виходить за межі області або коли йому буде призначено null. У C# посилання має бути видалено після того, як ми закінчимо його використовувати, це можна зробити за допомогою оператора using або безпосереднього виклику методу Dispose.


FileAccess create_temp(mode_flags: ModeFlags, prefix: String = "", extension: String = "", keep: bool = false) static 🔗

Створює тимчасовий файл. Цей файл буде звільнено, коли буде звільнено повернутий FileAccess.

Якщо prefix не порожній, він буде додано до імені файлу, розділеного -.

Якщо extension не пусте, воно буде додано до імені тимчасового файлу.

Якщо keep має значення true, файл не видаляється, коли звільняється повернутий FileAccess.

Повертає null, якщо відкрити файл не вдалося. Ви можете використовувати get_open_error(), щоб перевірити помилку, яка сталася.


bool eof_reached() const 🔗

Повертає true, якщо файловий курсор уже прочитав кінець файлу.

Примітка: eof_reached() == false не можна використовувати для перевірки наявності додаткових даних. Для циклу, поки є більше доступних даних, використовуйте:

while file.get_position() < file.get_length():
    # Читання даних

bool file_exists(path: String) static 🔗

Повертає true, якщо файл існує в даній доріці.

Примітка: Багато типів ресурсів імпортуються (наприклад, текстури або звукові файли), а їх вихідний актив не буде включений до експортованої гри, оскільки використовується тільки імпортна версія. Див. ResourceLoader.exists() для альтернативного підходу, який бере на облік ресурсу.

Для нестатичного, відносного еквівалента, використання DirAccess.file_exists().


void flush() 🔗

Напишіть буфер файлів на диск. Промивання автоматично здійснюється при закритті файлу. Це означає, що вам не потрібно викликати flush() вручну перед закриттям файлу. На жаль, виклик флуш() може бути використаний для забезпечення безпеки даних, навіть якщо проект не буде закритим гравіюванням.

Примітка: Тільки виклик flush(), коли вам дійсно потрібно. В іншому випадку це знизить продуктивність через постійні дискові записи.


int get_8() const 🔗

Повертає наступні 8 бітів з файлу як ціле число. Це переміщує курсор файлу на 1 байт. Див. store_8() для отримання детальної інформації про те, які значення можна зберігати та отримувати таким чином.


int get_16() const 🔗

Повертає наступні 16 бітів з файлу як ціле число. Це переміщує курсор файлу на 2 байти. Див. store_16() для отримання детальної інформації про те, які значення можна зберігати та отримувати таким чином.


int get_32() const 🔗

Повертає наступні 32 біти з файлу як ціле число. Це переміщує курсор файлу на 4 байти. Див. store_32() для отримання детальної інформації про те, які значення можна зберігати та отримувати таким чином.


int get_64() const 🔗

Повертає наступні 64 біти з файлу як ціле число. Це переміщує курсор файлу на 8 байтів. Див. store_64() для отримання детальної інформації про те, які значення можна зберігати та отримувати таким чином.


int get_access_time(file: String) static 🔗

Повертає час останнього доступу до file у форматі позначки часу Unix або 0 у разі помилки. Цю позначку часу Unix можна перетворити в інший формат за допомогою синглтона Time.


String get_as_text() const 🔗

Повертає весь файл як String. Текст інтерпретується як закодований UTF-8. Це ігнорує файловий курсор і не впливає на нього.


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! Який сюрприз!
Alice,"I thought you're reply ""Hello, world""."

Зверніть увагу, що другий рядок може пропускати лапки, оскільки він не містить роздільника. Однак, лапки можна використовувати, але без них це було написано лише для демонстрації. У третьому рядку для кожної лапки, яку потрібно інтерпретувати як таку, потрібно використовувати "", а не кінець текстового значення.


float get_double() const 🔗

Повертає наступні 64 біти з файлу у вигляді числа з плаваючою комою. Це переміщує курсор файлу на 8 байтів.


Error get_error() const 🔗

Повертаємо останню помилку, яка сталася при спробі виконання операцій. Порівняйте з ERR_FILE_* константи з Error.


PackedByteArray get_extended_attribute(file: String, attribute_name: String) static 🔗

Зчитує розширений атрибут файлу з назвою attribute_name як масив байтів.

Примітка: Цей метод реалізовано в Linux, macOS та Windows.

Примітка: Підтримка розширених атрибутів залежить від файлової системи. Атрибути будуть втрачені під час переміщення файлу між несумісними файловими системами.

Примітка: У Linux доступні лише атрибути простору імен "user", префікс простору імен не слід включати.

Примітка: У Windows для зберігання розширених атрибутів використовуються альтернативні потоки даних.


String get_extended_attribute_string(file: String, attribute_name: String) static 🔗

Зчитує розширений атрибут файлу з назвою attribute_name як рядок у кодуванні UTF-8.

Примітка: Цей метод реалізовано в Linux, macOS та Windows.

Примітка: Підтримка розширених атрибутів залежить від файлової системи. Атрибути будуть втрачені під час переміщення файлу між несумісними файловими системами.

Примітка: У Linux доступні лише атрибути простору імен "user", префікс простору імен не слід включати.

Примітка: У Windows для зберігання розширених атрибутів використовуються альтернативні потоки даних.


PackedStringArray get_extended_attributes_list(file: String) static 🔗

Повертає список розширених атрибутів файлу.

Примітка: Цей метод реалізовано в Linux, macOS та Windows.

Примітка: Підтримка розширених атрибутів залежить від файлової системи. Атрибути будуть втрачені під час переміщення файлу між несумісними файловими системами.

Примітка: У Linux доступні лише атрибути простору імен "user", префікс простору імен не слід включати.

Примітка: У Windows для зберігання розширених атрибутів використовуються альтернативні потоки даних.


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() для перевірки помилки, яка сталася.


float get_float() const 🔗

Повертає наступні 32 біти з файлу у вигляді числа з плаваючою комою. Це переміщує курсор файлу на 4 байти.


float get_half() const 🔗

Повертає наступні 16 бітів з файлу у вигляді числа з плаваючою комою половинної точності. Це переміщує курсор файлу на 2 байти.


bool get_hidden_attribute(file: String) static 🔗

Повертає true, якщо атрибут hidden встановлено для файлу за вказаним шляхом.

Примітка: Цей метод реалізовано на iOS, BSD, macOS та Windows.


int get_length() const 🔗

Повертає розмір файлу в байтах. Для каналу повертає кількість байтів, доступних для читання з каналу.


String get_line() const 🔗

Повертає наступний рядок файлу як String. Повернений рядок не містить символів нового рядка (\n) або повернення каретки (\r), але містить будь-які інші початкові або кінцеві пробіли. Це переміщує курсор файлу після символу нового рядка в кінці рядка.

Текст інтерпретується як закодований UTF-8.


String get_md5(path: String) static 🔗

Повертаємо вашу увагу на те, що файл на даній доріжці або порожній String.


int get_modified_time(file: String) static 🔗

Повернувшись до останнього часу, файл file був модифікований у форматі Unix timestamp, або 0 на помилку. Цей Unix Timestamp може бути перетворений в інший формат, використовуючи одинтон Time.


Error get_open_error() static 🔗

Повертає результат останнього виклику open() у поточному потоці.


String get_pascal_string() 🔗

Повертає рядок String, збережений у форматі Pascal з файлу, тобто довжина рядка явно зберігається на початку. Див. store_pascal_string(). Це може включати символи нового рядка. Курсор файлу переміщується після прочитаних байтів.

Текст інтерпретується як закодований UTF-8.


String get_path() const 🔗

Повертає шлях як String для поточного відкритого файлу.


String get_path_absolute() const 🔗

Повертає абсолютний шлях як String для поточного відкритого файлу.


int get_position() const 🔗

Повертає позицію курсора файлу в байтах від початку файлу. Це курсор читання/запису файлу, встановлений методом seek() або seek_end() та просуваний операціями читання/запису.


bool get_read_only_attribute(file: String) static 🔗

Повертає true, якщо для файлу за вказаним шляхом встановлено атрибут лише для читання.

Примітка: Цей метод реалізовано на iOS, BSD, macOS та Windows.


float get_real() const 🔗

Повертає наступні біти з файлу як число з плаваючою комою. Це просуває курсор файлу на 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(), як описано в документації Binary serialization API.

Попередження: Десеріалізовані об'єкти можуть містити код, який виконується. Не використовуйте цю опцію, якщо серіалізований об'єкт походить з ненадійних джерел, щоб уникнути потенційних загроз безпеці, таких як віддалене виконання коду.


bool is_open() const 🔗

Повертаємо 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() для перевірки помилки, яка сталася.


Error remove_extended_attribute(file: String, attribute_name: String) static 🔗

Вилучає розширений атрибут файлу з назвою attribute_name.

Примітка: Цей метод реалізовано в Linux, macOS та Windows.

Примітка: Підтримка розширених атрибутів залежить від файлової системи. Атрибути будуть втрачені під час переміщення файлу між несумісними файловими системами.

Примітка: У Linux доступні лише атрибути простору імен "user", префікс простору імен не слід включати.

Примітка: У Windows для зберігання розширених атрибутів використовуються альтернативні потоки даних.


Error resize(length: int) 🔗

Змінити файл до вказаної довжини. Файл повинен бути відкритим у режимі, який дозволяє писати. Якщо файл розширено, наведено NUL символи. Якщо файл обрізається, всі дані з кінцевого файлу до початкової довжини файлу втрачені.


void seek(position: int) 🔗

Встановлює курсор файлу у вказану позицію в байтах, від початку файлу. Це змінює значення, що повертається методом get_position().


void seek_end(position: int = 0) 🔗

Sets the file cursor to the specified position in bytes, from the end of the file. This changes the value returned by get_position().

Note: This is an offset, so you should use negative numbers otherwise the file cursor will move past the end of the file.


Error set_extended_attribute(file: String, attribute_name: String, data: PackedByteArray) static 🔗

Записує розширений атрибут файлу з назвою attribute_name як байтовий масив.

Примітка: Цей метод реалізовано в Linux, macOS та Windows.

Примітка: Підтримка розширених атрибутів залежить від файлової системи. Атрибути будуть втрачені під час переміщення файлу між несумісними файловими системами.

Примітка: У Linux доступні лише атрибути простору імен "user", префікс простору імен не слід включати.

Примітка: У Windows для зберігання розширених атрибутів використовуються альтернативні потоки даних.


Error set_extended_attribute_string(file: String, attribute_name: String, data: String) static 🔗

Записує розширений атрибут файлу з назвою attribute_name як рядок у кодуванні UTF-8.

Примітка: Цей метод реалізовано в Linux, macOS та Windows.

Примітка: Підтримка розширених атрибутів залежить від файлової системи. Атрибути будуть втрачені під час переміщення файлу між несумісними файловими системами.

Примітка: У Linux доступні лише атрибути простору імен "user", префікс простору імен не слід включати.

Примітка: У Windows для зберігання розширених атрибутів використовуються альтернативні потоки даних.


Error set_hidden_attribute(file: String, hidden: bool) static 🔗

Встановлює файл прихований атрибут.

Примітка: Цей метод реалізується на 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 🔗

Встановлює файл УНІКС дозволів.

Примітка: Цей метод реалізується на iOS, Linux/BSD та macOS.


bool store_8(value: int) 🔗

Зберігає ціле число у файлі як 8 бітів. Це переміщує курсор файлу на 1 байт. Повертає true, якщо операція успішна.

Примітка: Значення value має лежати в інтервалі [0, 255]. Будь-яке інше значення призведе до переповнення та перенесення.

Примітка: Якщо виникає помилка, результуюче значення індикатора позиції файлу є невизначеним.

Щоб зберегти знакове ціле число, використовуйте store_64() або конвертуйте його вручну (див. приклад store_16()).


bool store_16(value: int) 🔗

Зберігає ціле число у файлі як 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

bool store_32(value: int) 🔗

Зберігає ціле число у файлі як 32 біти. Це просуває курсор файлу на 4 байти. Повертає true, якщо операція успішна.

Примітка: Значення valve має лежати в інтервалі [0, 2^32 - 1]. Будь-яке інше значення призведе до переповнення та переносу.

Примітка: Якщо виникає помилка, результуюче значення індикатора позиції файлу є невизначеним.

Щоб зберегти знакове ціле число, використовуйте store_64() або конвертуйте його вручну (див. приклад store_16()).


bool store_64(value: int) 🔗

Зберігає ціле число у файлі як 64 біти. Це переміщує курсор файлу на 8 байтів. Повертає true, якщо операція успішна.

Примітка: Значення valve має лежати в інтервалі [-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) 🔗

Зберігає у файлі число з плаваючою комою половинної точності як 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(), як описано в документації Binary serialization API.

Примітка: Не всі властивості включено. Серіалізовано буде лише ті властивості, які налаштовані з встановленим прапорцем @GlobalScope.PROPERTY_USAGE_STORAGE. Ви можете додати новий прапорець використання до властивості, перевизначивши метод Object._get_property_list() у вашому класі. Ви також можете перевірити, як налаштовано використання властивості, викликавши Object._get_property_list(). Див. PropertyUsageFlags для можливих прапорців використання.

Примітка: Якщо виникає помилка, результуюче значення індикатора позиції файлу є невизначеним.