FileAccess

Hereda: RefCounted < Object

Proporciona métodos para las operaciones de lectura y escritura de archivos.

Descripción

This class can be used to permanently store data in the user device's file system and to read from it. This is useful for storing game save data or player configuration files.

Example: How to write and read from a file. The file named "save_game.dat" will be stored in the user data folder, as specified in the Data paths documentation:

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

A FileAccess instance has its own file cursor, which is the position in bytes in the file where the next read/write operation will occur. Functions such as get_8(), get_16(), store_8(), and store_16() will move the file cursor forward by the number of bytes read/written. The file cursor can be moved to a specific position using seek() or seek_end(), and its position can be retrieved using get_position().

A FileAccess instance will close its file when the instance is freed. Since it inherits RefCounted, this happens automatically when it is no longer in use. close() can be called to close it earlier. In C#, the reference must be disposed manually, which can be done with the using statement or by calling the Dispose method directly.

Note: To access project resources once exported, it is recommended to use ResourceLoader instead of FileAccess, as some files are converted to engine-specific formats and their original source files might not be present in the exported PCK package. If using FileAccess, make sure the file is included in the export by changing its import mode to Keep File (exported as is) in the Import dock, or, for files where this option is not available, change the non-resource export filter in the Export dialog to include the file's extension (e.g. *.txt).

Note: Files are automatically closed only if the process exits "normally" (such as by clicking the window manager's close button or pressing Alt + F4). If you stop the project execution by pressing F8 while the project is running, the file won't be closed as the game process will be killed. You can work around this by calling flush() at regular intervals.

Tutoriales

Propiedades

bool

big_endian

Métodos

void

close()

FileAccess

create_temp(mode_flags: int, 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(skip_cr: bool = false) const

PackedByteArray

get_buffer(length: int) const

PackedStringArray

get_csv_line(delim: String = ",") const

float

get_double() const

Error

get_error() const

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

resize(length: int)

void

seek(position: int)

void

seek_end(position: int = 0)

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)


Enumeraciones

enum ModeFlags: 🔗

ModeFlags READ = 1

Abre el archivo para operaciones de lectura. El cursor del archivo se posiciona al principio del archivo.

ModeFlags WRITE = 2

Abre el archivo para operaciones de escritura. El archivo se crea si no existe y se trunca si existe.

Nota: Al crear un archivo, debe estar en un directorio ya existente. Para crear directorios de forma recursiva para una ruta de archivo, véase DirAccess.make_dir_recursive().

ModeFlags READ_WRITE = 3

Abre el archivo para operaciones de lectura y escritura. No trunca el archivo. El cursor del archivo se posiciona al principio del archivo.

ModeFlags WRITE_READ = 7

Abre el archivo para operaciones de lectura y escritura. El archivo se crea si no existe y se trunca si existe. El cursor del archivo se posiciona al principio del archivo.

Nota: Al crear un archivo, debe estar en un directorio ya existente. Para crear directorios de forma recursiva para una ruta de archivo, véase DirAccess.make_dir_recursive().


enum CompressionMode: 🔗

CompressionMode COMPRESSION_FASTLZ = 0

Utiliza el método de compresión FastLZ.

CompressionMode COMPRESSION_DEFLATE = 1

Utiliza el método de compresión DEFLATE.

CompressionMode COMPRESSION_ZSTD = 2

Utiliza el método de compresión Zstandard.

CompressionMode COMPRESSION_GZIP = 3

Utiliza el método de compresión gzip.

CompressionMode COMPRESSION_BROTLI = 4

Utiliza el método de compresión brotli (solo se admite la descompresión).


flags UnixPermissionFlags: 🔗

UnixPermissionFlags UNIX_READ_OWNER = 256

Bit de lectura para el propietario.

UnixPermissionFlags UNIX_WRITE_OWNER = 128

Bit de escritura para el propietario.

UnixPermissionFlags UNIX_EXECUTE_OWNER = 64

Bit de ejecución para el propietario.

UnixPermissionFlags UNIX_READ_GROUP = 32

Bit de lectura para el grupo.

UnixPermissionFlags UNIX_WRITE_GROUP = 16

Bit de escritura para el grupo.

UnixPermissionFlags UNIX_EXECUTE_GROUP = 8

Bit de ejecución para el grupo.

UnixPermissionFlags UNIX_READ_OTHER = 4

Bit de lectura para otros.

UnixPermissionFlags UNIX_WRITE_OTHER = 2

Bit de escritura para otros.

UnixPermissionFlags UNIX_EXECUTE_OTHER = 1

Bit de ejecución para otros.

UnixPermissionFlags UNIX_SET_USER_ID = 2048

Bit para establecer el ID de usuario en la ejecución.

UnixPermissionFlags UNIX_SET_GROUP_ID = 1024

Bit para establecer el ID de grupo en la ejecución.

UnixPermissionFlags UNIX_RESTRICTED_DELETE = 512

Bit de borrado restringido (sticky bit).


Descripciones de Propiedades

bool big_endian 🔗

  • void set_big_endian(value: bool)

  • bool is_big_endian()

Si es true, el archivo se lee con endianness big-endian (endianness). Si es false, el archivo se lee con endianness little-endian. En caso de duda, déjalo en false, ya que la mayoría de los archivos se escriben con endianness little-endian.

Nota: Esto siempre se restablece a la endianness del sistema, que es little-endian en todas las plataformas compatibles, cada vez que abres el archivo. Por lo tanto, debes establecer big_endian después de abrir el archivo, no antes.


Descripciones de Métodos

void close() 🔗

Cierra el archivo actualmente abierto e impide las operaciones de lectura/escritura posteriores. Utiliza flush() para guardar los datos en el disco sin cerrar el archivo.

Nota: FileAccess se cerrará automáticamente cuando se libere, lo que sucede cuando sale del alcance o cuando se le asigna null. En C#, la referencia debe eliminarse después de que hayamos terminado de usarla, esto se puede hacer con la declaración using o llamando al método Dispose directamente.


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

Crea un archivo temporal. Este archivo se liberará cuando el FileAccess devuelto se libere.

Si prefix no está vacío, se antepondrá al nombre del archivo, separado por un -.

Si extension no está vacío, se agregará al nombre del archivo temporal.

Si keep es true, el archivo no se elimina cuando se libera el FileAccess devuelto.

Devuelve null si falla la apertura del archivo. Puedes utilizar get_open_error() para comprobar el error que se produjo.


bool eof_reached() const 🔗

Returns true if the file cursor has already read past the end of the file.

Note: eof_reached() == false cannot be used to check whether there is more data available. To loop while there is more data available, use:

while file.get_position() < file.get_length():
    # Read data

bool file_exists(path: String) static 🔗

Devuelve true si el archivo existe en la ruta dada.

Nota: Muchos tipos de recursos son importados (por ejemplo, texturas o archivos de sonido), y su activo de origen no se incluirá en el juego exportado, ya que solo se utiliza la versión importada. Véase ResourceLoader.exists() para un enfoque alternativo que tenga en cuenta la reasignación de recursos.

Para un equivalente relativo no estático, utiliza DirAccess.file_exists().


void flush() 🔗

Escribe el búfer del archivo en el disco. El vaciado se realiza automáticamente cuando se cierra el archivo. Esto significa que no necesitas llamar a flush() manualmente antes de cerrar un archivo. Aún así, llamar a flush() puede utilizarse para asegurar que los datos están a salvo incluso si el proyecto falla en lugar de cerrarse correctamente.

Nota: Solo llama a flush() cuando realmente lo necesites. De lo contrario, disminuirá el rendimiento debido a las constantes escrituras en disco.


int get_8() const 🔗

Devuelve los siguientes 8 bits del archivo como un entero. Esto avanza el cursor del archivo en 1 byte. Véase store_8() para obtener detalles sobre qué valores pueden ser almacenados y recuperados de esta manera.


int get_16() const 🔗

Returns the next 16 bits from the file as an integer. This advances the file cursor by 2 bytes. See store_16() for details on what values can be stored and retrieved this way.


int get_32() const 🔗

Devuelve los siguientes 32 bits del archivo como un entero. Esto avanza el cursor del archivo en 4 bytes. Véase store_32() para obtener detalles sobre qué valores se pueden almacenar y recuperar de esta manera.


int get_64() const 🔗

Devuelve los siguientes 64 bits del archivo como un entero. Esto avanza el cursor del archivo en 8 bytes. Véase store_64() para obtener detalles sobre qué valores se pueden almacenar y recuperar de esta manera.


int get_access_time(file: String) static 🔗

Devuelve la última vez que se accedió al file en formato de marca de tiempo Unix, o 0 en caso de error. Esta marca de tiempo Unix se puede convertir a otro formato mediante el singleton Time.


String get_as_text(skip_cr: bool = false) const 🔗

Devuelve el archivo completo como una String. El texto se interpreta como codificado en UTF-8. Esto ignora el cursor del archivo y no lo afecta.

Si skip_cr es true, los caracteres de retorno de carro (\r, CR) se ignorarán al analizar el UTF-8, de modo que solo los caracteres de avance de línea (\n, LF) representen una nueva línea (convención de Unix).


PackedByteArray get_buffer(length: int) const 🔗

Devuelve los siguientes length bytes del archivo como un PackedByteArray. Esto avanza el cursor del archivo en length bytes.


PackedStringArray get_csv_line(delim: String = ",") const 🔗

Returns the next value of the file in CSV (Comma-Separated Values) format. You can pass a different delimiter delim to use other than the default "," (comma). This delimiter must be one-character long, and cannot be a double quotation mark.

Text is interpreted as being UTF-8 encoded. Text values must be enclosed in double quotes if they include the delimiter character. Double quotes within a text value can be escaped by doubling their occurrence. This advances the file cursor to after the newline character at the end of the line.

For example, the following CSV lines are valid and will be properly parsed as two strings each:

Alice,"Hello, Bob!"
Bob,Alice! What a surprise!
Alice,"I thought you'd reply with ""Hello, world""."

Note how the second line can omit the enclosing quotes as it does not include the delimiter. However it could very well use quotes, it was only written without for demonstration purposes. The third line must use "" for each quotation mark that needs to be interpreted as such instead of the end of a text value.


float get_double() const 🔗

Returns the next 64 bits from the file as a floating-point number. This advances the file cursor by 8 bytes.


Error get_error() const 🔗

Devuelve el último error que ocurrió al intentar realizar las operaciones. Compare con las constantes ERR_FILE_* de Error.


PackedByteArray get_file_as_bytes(path: String) static 🔗

Devuelve todo el contenido del archivo path como un PackedByteArray sin ninguna decodificación.

Devuelve un PackedByteArray vacío si se produce un error al abrir el archivo. Puedes usar get_open_error() para verificar el error que ocurrió.


String get_file_as_string(path: String) static 🔗

Devuelve todo el contenido del archivo path como un String. El texto se interpreta como codificado en UTF-8.

Devuelve un String vacío si se produce un error al abrir el archivo. Puedes usar get_open_error() para verificar el error que ocurrió.


float get_float() const 🔗

Devuelve los siguientes 32 bits del archivo como un número de punto flotante. Esto avanza el cursor del archivo en 4 bytes.


float get_half() const 🔗

Devuelve los siguientes 16 bits del archivo como un número de punto flotante de media precisión. Esto avanza el cursor del archivo en 2 bytes.


bool get_hidden_attribute(file: String) static 🔗

Devuelve true si el atributo hidden del archivo está activado.

Nota: Este método está implementado en iOS, BSD, macOS y Windows.


int get_length() const 🔗

Devuelve el tamaño del archivo en bytes. Para una tubería, devuelve el número de bytes disponibles para leer de la tubería.


String get_line() const 🔗

Devuelve la siguiente línea del archivo como una String. La string devuelta no incluye el carácter de nueva línea (\n) ni el de retorno de carro (\r), pero sí incluye cualquier otro espacio en blanco inicial o final. Esto avanza el cursor del archivo hasta después del carácter de nueva línea al final de la línea.

El texto se interpreta como codificado en UTF-8.


String get_md5(path: String) static 🔗

Devuelve una string MD5 que representa el archivo en la ruta dada o una String vacía al fallar.


int get_modified_time(file: String) static 🔗

Devuelve la última vez que se modificó file en formato de marca de tiempo Unix, o 0 en caso de error. Esta marca de tiempo Unix se puede convertir a otro formato mediante el singleton Time.


Error get_open_error() static 🔗

Returns the result of the last open() call in the current thread.


String get_pascal_string() 🔗

Devuelve una String guardado en formato Pascal desde el archivo, lo que significa que la longitud de la string se almacena explícitamente al principio. Véase store_pascal_string(). Esto puede incluir caracteres de nueva línea. El cursor del archivo se avanza después de los bytes leídos.

El texto se interpreta como codificado en UTF-8.


String get_path() const 🔗

Devuelve la ruta como una String para el archivo abierto actual.


String get_path_absolute() const 🔗

Devuelve la ruta absoluta como una String para el archivo abierto actual.


int get_position() const 🔗

Devuelve la posición en bytes del cursor del archivo desde el principio del archivo. Este es el cursor de lectura/escritura del archivo establecido por seek() o seek_end() y avanzado por las operaciones de lectura/escritura.


bool get_read_only_attribute(file: String) static 🔗

Devuelve true si el atributo read only del archivo está establecido.

Nota: Este método está implementado en iOS, BSD, macOS y Windows.


float get_real() const 🔗

Devuelve los siguientes bits del archivo como un número de punto flotante. Esto avanza el cursor del archivo en 4 u 8 bytes, dependiendo de la precisión utilizada por la compilación de Godot que guardó el archivo.

Si el archivo fue guardado por una compilación de Godot compilada con la opción precision=single (la predeterminada), el número de bits leídos para ese archivo es 32. De lo contrario, si se compila con la opción precision=double, el número de bits leídos es 64.


String get_sha256(path: String) static 🔗

Devuelve un SHA-256 String que representa el archivo en la ruta indicada o un String vacío en caso de error.


int get_size(file: String) static 🔗

Devuelve el tamaño del archivo en bytes o -1 en caso de error.


BitField[UnixPermissionFlags] get_unix_permissions(file: String) static 🔗

Devuelve los permisos de archivo UNIX.

Nota: Este método está implementado en iOS, Linux/BSD y macOS.


Variant get_var(allow_objects: bool = false) const 🔗

Devuelve el siguiente valor Variant del archivo. Si allow_objects es true, se permite la decodificación de objetos. Esto avanza el cursor del archivo por el número de bytes leídos.

Internamente, esto utiliza el mismo mecanismo de decodificación que el @GlobalScope.bytes_to_var(), como se describe en la documentación de la API de serialización binaria.

Advertencia: Los objetos deserializados pueden contener código que se ejecuta. No uses esta opción si el objeto serializado proviene de fuentes no confiables para evitar posibles amenazas a la seguridad, como la ejecución remota de código.


bool is_open() const 🔗

Devuelve true si el archivo está actualmente abierto.


FileAccess open(path: String, flags: ModeFlags) static 🔗

Crea un nuevo objeto FileAccess y abre el archivo para escritura o lectura, según las banderas.

Devuelve null si falla la apertura del archivo. Puedes usar get_open_error() para comprobar el error.


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

Creates a new FileAccess object and opens a compressed file for reading or writing.

Note: open_compressed() can only read files that were saved by Godot, not third-party compression formats. See GitHub issue #28999 for a workaround.

Returns null if opening the file failed. You can use get_open_error() to check the error that occurred.


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

Crea un nuevo objeto FileAccess y abre un archivo cifrado en modo de escritura o lectura. Debes pasar una clave binaria para cifrarlo o descifrarlo.

Nota: La clave proporcionada debe tener 32 bytes.

Devuelve null si no se pudo abrir el archivo. Puedes usar get_open_error() para comprobar el error.


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

Crea un nuevo objeto FileAccess y abre un archivo encriptado en modo de escritura o lectura. Necesitas proporcionar una contraseña para encriptarlo/desencriptarlo.

Devuelve null si la apertura del archivo falla. Puedes usar get_open_error() para verificar el error que ocurrió.


Error resize(length: int) 🔗

Cambia el tamaño del archivo a una longitud especificada. El archivo debe estar abierto en un modo que permita la escritura. Si el archivo se extiende, se añaden caracteres NUL. Si el archivo se trunca, todos los datos desde el final del archivo hasta la longitud original del archivo se pierden.


void seek(position: int) 🔗

Cambia el cursor de lectura/escritura del archivo a la posición especificada (en bytes desde el principio del archivo). Esto cambia el valor devuelto por get_position().


void seek_end(position: int = 0) 🔗

Cambia el cursor de lectura/escritura del archivo a la posición especificada (en bytes desde el final del archivo). Esto cambia el valor devuelto por get_position().

Nota: Esto es un offset, así que deberías usar números negativos o el cursor del archivo estará al final del archivo.


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

Sets file hidden attribute.

Note: This method is implemented on iOS, BSD, macOS, and Windows.


Error set_read_only_attribute(file: String, ro: bool) static 🔗

Establece el atributo de solo lectura del archivo.

Nota: Este método está implementado en iOS, BSD, macOS y Windows.


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

Establece los permisos UNIX del archivo.

Nota: Este método está implementado en iOS, Linux/BSD y macOS.


bool store_8(value: int) 🔗

Almacena un entero de 8 bits en el archivo. Esto avanza el cursor del archivo 1 byte. Devuelve true si la operación se realiza con éxito.

Nota: El value debe estar en el intervalo [0, 255]. Cualquier otro valor provocará un desbordamiento y dará la vuelta.

Nota: Si se produce un error, el valor resultante del indicador de posición del archivo es indeterminado.

Para almacenar un entero con signo, utiliza store_64(), o conviértelo manualmente (véase store_16() para un ejemplo).


bool store_16(value: int) 🔗

Almacena un entero como 16 bits en el archivo. Esto avanza el cursor del archivo en 2 bytes. Devuelve true si la operación es exitosa.

Nota: El value debe estar en el intervalo de [0, 2^16 - 1]. Cualquier otro valor se desbordará y dará la vuelta.

Nota: Si ocurre un error, el valor resultante del indicador de posición del archivo es indeterminado.

Para almacenar un entero con signo, usa store_64() o almacena un entero con signo del intervalo [-2^15, 2^15 - 1] (es decir, guardando un bit para el signo) y calcula su signo manualmente al leer. Por ejemplo:

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) # Esto da la vuelta y almacena 65494 (2^16 - 42).
    f.store_16(121) # Dentro de los límites, almacenará 121.
    f.seek(0) # Vuelve al principio para leer el valor almacenado.
    var lectura1 = f.get_16() # 65494
    var lectura2 = f.get_16() # 121
    var convertido1 = unsigned16_to_signed(lectura1) # -42
    var convertido2 = unsigned16_to_signed(lectura2) # 121

bool store_32(value: int) 🔗

Almacena un entero de 32 bits en el archivo. Esto avanza el cursor del archivo 4 bytes. Devuelve true si la operación tiene éxito.

Nota: El value debe estar en el intervalo [0, 2^32 - 1]. Cualquier otro valor causará un desbordamiento y dará la vuelta.

Nota: Si ocurre un error, el valor resultante del indicador de posición del archivo es indeterminado.

Para almacenar un entero con signo, usa store_64(), o conviértelo manualmente (véase store_16() para un ejemplo).


bool store_64(value: int) 🔗

Almacena un entero de 64 bits en el archivo. Esto avanza el cursor del archivo 8 bytes. Devuelve true si la operación tiene éxito.

Nota: El value debe estar en el intervalo [-2^63, 2^63 - 1] (es decir, debe ser un valor int válido).

Nota: Si ocurre un error, el valor resultante del indicador de posición del archivo es indeterminado.


bool store_buffer(buffer: PackedByteArray) 🔗

Almacena la array de bytes dada en el archivo. Esto avanza el cursor del archivo por el número de bytes escritos. Devuelve true si la operación tiene éxito.

Nota: Si ocurre un error, el valor resultante del indicador de posición del archivo es indeterminado.


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

Almacena el PackedStringArray dado en el archivo como una línea formateada en formato CSV (valores separados por comas). Puedes pasar un delim diferente para usar otro que no sea el predeterminado "," (coma). Este delimitador debe tener un carácter de longitud.

El texto se codificará como UTF-8. Devuelve true si la operación se realiza correctamente.

Nota: Si se produce un error, el valor resultante del indicador de posición del archivo es indeterminado.


bool store_double(value: float) 🔗

Almacena un número de punto flotante como 64 bits en el archivo. Esto avanza el cursor del archivo en 8 bytes. Devuelve true si la operación se realiza correctamente.

Nota: Si se produce un error, el valor resultante del indicador de posición del archivo es indeterminado.


bool store_float(value: float) 🔗

Almacena un número de punto flotante como 32 bits en el archivo. Esto avanza el cursor del archivo en 4 bytes. Devuelve true si la operación se realiza correctamente.

Nota: Si se produce un error, el valor resultante del indicador de posición del archivo es indeterminado.


bool store_half(value: float) 🔗

Almacena un número de punto flotante de media precisión como 16 bits en el archivo. Esto avanza el cursor del archivo en 2 bytes. Devuelve true si la operación se realiza correctamente.

Nota: Si se produce un error, el valor resultante del indicador de posición del archivo es indeterminado.


bool store_line(line: String) 🔗

Almacena line en el archivo seguido de un carácter de nueva línea (\n), codificando el texto como UTF-8. Esto avanza el cursor del archivo en la longitud de la línea, después del carácter de nueva línea. La cantidad de bytes escritos depende de los bytes codificados en UTF-8, que pueden ser diferentes de String.length() que cuenta el número de codepuntos UTF-32. Devuelve true si la operación es exitosa.

Nota: Si ocurre un error, el valor resultante del indicador de posición del archivo es indeterminado.


bool store_pascal_string(string: String) 🔗

Almacena la String dada como una línea en el archivo en formato Pascal (es decir, también almacena la longitud de la string). El texto se codificará como UTF-8. Esto avanza el cursor del archivo por el número de bytes escritos dependiendo de los bytes codificados en UTF-8, que pueden ser diferentes de String.length() que cuenta el número de codepuntos UTF-32. Devuelve true si la operación es exitosa.

Nota: Si ocurre un error, el valor resultante del indicador de posición del archivo es indeterminado.


bool store_real(value: float) 🔗

Almacena un número de punto flotante en el archivo. Esto avanza el cursor del archivo en 4 u 8 bytes, dependiendo de la precisión utilizada por la compilación actual de Godot.

Si se utiliza una compilación de Godot compilada con la opción precision=single (la predeterminada), este método guardará un float de 32 bits. De lo contrario, si se compila con la opción precision=double, esto guardará un float de 64 bits. Devuelve true si la operación es exitosa.

Nota: Si ocurre un error, el valor resultante del indicador de posición del archivo es indeterminado.


bool store_string(string: String) 🔗

Almacena string en el archivo sin un carácter de nueva línea (\n), codificando el texto como UTF-8. Esto avanza el cursor del archivo por la longitud de la string en bytes codificados en UTF-8, lo que puede ser diferente de String.length() que cuenta el número de codepuntos UTF-32. Devuelve true si la operación se realiza correctamente.

Nota: Este método está destinado a ser utilizado para escribir archivos de texto. La string se almacena como un búfer codificado en UTF-8 sin longitud de string o cero de terminación, lo que significa que no se puede volver a cargar fácilmente. Si quieres almacenar una string recuperable en un archivo binario, considera usar store_pascal_string() en su lugar. Para recuperar strings de un archivo de texto, puedes usar get_buffer(length).get_string_from_utf8() (si conoces la longitud) o get_as_text().

Nota: Si ocurre un error, el valor resultante del indicador de posición del archivo es indeterminado.


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

Almacena cualquier valor Variant en el archivo. Si full_objects es true, se permite la codificación de objetos (y puede incluir código). Esto avanza el cursor del archivo por el número de bytes escritos. Devuelve true si la operación se realiza correctamente.

Internamente, esto utiliza el mismo mecanismo de codificación que el @GlobalScope.var_to_bytes(), como se describe en la documentación de la API de serialización binaria.

Nota: No se incluyen todas las propiedades. Solo se serializarán las propiedades que estén configuradas con el flag @GlobalScope.PROPERTY_USAGE_STORAGE establecido. Puedes agregar un nuevo flag de uso a una propiedad sobrescribiendo el método Object._get_property_list() en tu clase. También puedes verificar cómo se configura el uso de la propiedad llamando a Object._get_property_list(). Véase PropertyUsageFlags para ver los flags de uso posibles.

Nota: Si ocurre un error, el valor resultante del indicador de posición del archivo es indeterminado.