[][src]Struct gdnative::api::File

pub struct File { /* fields omitted */ }

core class File inherits Reference (reference counted).

Official documentation

See the documentation of this class in the Godot engine's official documentation.

Memory management

The lifetime of this object is automatically managed through reference counting.

Class hierarchy

File inherits methods from:

Safety

All types in the Godot API have "interior mutability" in Rust parlance. To enforce that the official thread-safety guidelines are followed, the typestate pattern is used in the Ref and TRef smart pointers, and the Instance API. The typestate Access in these types tracks whether the access is unique, shared, or exclusive to the current thread. For more information, see the type-level documentation on Ref.

Implementations

impl File[src]

Constants

impl File[src]

pub fn new() -> Ref<File, Unique>[src]

Creates a new instance of this object.

This is a reference-counted type. The returned object is automatically managed by Ref.

pub fn close(&self)[src]

Closes the currently opened file.

pub fn eof_reached(&self) -> bool[src]

Returns [code]true[/code] if the file cursor has read past the end of the file.
				[b]Note:[/b] This function will still return [code]false[/code] while at the end of the file and only activates when reading past it. This can be confusing but it conforms to how low-level file access works in all operating systems. There is always [method get_len] and [method get_position] to implement a custom logic.

pub fn file_exists(&self, path: impl Into<GodotString>) -> bool[src]

Returns [code]true[/code] if the file exists in the given path.
				[b]Note:[/b] Many resources types are imported (e.g. textures or sound files), and that their source asset will not be included in the exported game, as only the imported version is used (in the [code]res://.import[/code] folder). To check for the existence of such resources while taking into account the remapping to their imported location, use [method ResourceLoader.exists]. Typically, using [code]File.file_exists[/code] on an imported resource would work while you are developing in the editor (the source asset is present in [code]res://[/code], but fail when exported).

pub fn get_16(&self) -> i64[src]

Returns the next 16 bits from the file as an integer. See [method store_16] for details on what values can be stored and retrieved this way.

pub fn get_32(&self) -> i64[src]

Returns the next 32 bits from the file as an integer. See [method store_32] for details on what values can be stored and retrieved this way.

pub fn get_64(&self) -> i64[src]

Returns the next 64 bits from the file as an integer. See [method store_64] for details on what values can be stored and retrieved this way.

pub fn get_8(&self) -> i64[src]

Returns the next 8 bits from the file as an integer. See [method store_8] for details on what values can be stored and retrieved this way.

pub fn get_as_text(&self) -> GodotString[src]

Returns the whole file as a [String].
				Text is interpreted as being UTF-8 encoded.

pub fn get_buffer(&self, len: i64) -> TypedArray<u8>[src]

Returns next [code]len[/code] bytes of the file as a [PoolByteArray].

pub fn get_csv_line(
    &self,
    delim: impl Into<GodotString>
) -> TypedArray<GodotString>
[src]

Returns the next value of the file in CSV (Comma-Separated Values) format. You can pass a different delimiter [code]delim[/code] to use other than the default [code]","[/code] (comma). This delimiter must be one-character long.
				Text is interpreted as being UTF-8 encoded.

Default Arguments

  • delim - ","

pub fn get_double(&self) -> f64[src]

Returns the next 64 bits from the file as a floating-point number.

pub fn endian_swap(&self) -> bool[src]

If [code]true[/code], the file's endianness is swapped. Use this if you're dealing with files written on big-endian machines.
			[b]Note:[/b] This is about the file format, not CPU type. This is always reset to [code]false[/code] whenever you open the file.

pub fn get_error(&self) -> Result<(), GodotError>[src]

Returns the last error that happened when trying to perform operations. Compare with the [code]ERR_FILE_*[/code] constants from [enum Error].

pub fn get_float(&self) -> f64[src]

Returns the next 32 bits from the file as a floating-point number.

pub fn get_len(&self) -> i64[src]

Returns the size of the file in bytes.

pub fn get_line(&self) -> GodotString[src]

Returns the next line of the file as a [String].
				Text is interpreted as being UTF-8 encoded.

pub fn get_md5(&self, path: impl Into<GodotString>) -> GodotString[src]

Returns an MD5 String representing the file at the given path or an empty [String] on failure.

pub fn get_modified_time(&self, file: impl Into<GodotString>) -> i64[src]

Returns the last time the [code]file[/code] was modified in unix timestamp format or returns a [String] "ERROR IN [code]file[/code]". This unix timestamp can be converted to datetime by using [method OS.get_datetime_from_unix_time].

pub fn get_pascal_string(&self) -> GodotString[src]

Returns a [String] saved in Pascal format from the file.
				Text is interpreted as being UTF-8 encoded.

pub fn get_path(&self) -> GodotString[src]

Returns the path as a [String] for the current open file.

pub fn get_path_absolute(&self) -> GodotString[src]

Returns the absolute path as a [String] for the current open file.

pub fn get_position(&self) -> i64[src]

Returns the file cursor's position.

pub fn get_real(&self) -> f64[src]

Returns the next bits from the file as a floating-point number.

pub fn get_sha256(&self, path: impl Into<GodotString>) -> GodotString[src]

Returns a SHA-256 [String] representing the file at the given path or an empty [String] on failure.

pub fn get_var(&self, allow_objects: bool) -> Variant[src]

Returns the next [Variant] value from the file. If [code]allow_objects[/code] is [code]true[/code], decoding objects is allowed.
				[b]Warning:[/b] Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.

Default Arguments

  • allow_objects - false

pub fn is_open(&self) -> bool[src]

Returns [code]true[/code] if the file is currently opened.

pub fn open(
    &self,
    path: impl Into<GodotString>,
    flags: i64
) -> Result<(), GodotError>
[src]

Opens the file for writing or reading, depending on the flags.

pub fn open_compressed(
    &self,
    path: impl Into<GodotString>,
    mode_flags: i64,
    compression_mode: i64
) -> Result<(), GodotError>
[src]

Opens a compressed file for reading or writing.

Default Arguments

  • compression_mode - 0

pub fn open_encrypted(
    &self,
    path: impl Into<GodotString>,
    mode_flags: i64,
    key: TypedArray<u8>
) -> Result<(), GodotError>
[src]

Opens an encrypted file in write or read mode. You need to pass a binary key to encrypt/decrypt it.
				[b]Note:[/b] The provided key must be 32 bytes long.

pub fn open_encrypted_with_pass(
    &self,
    path: impl Into<GodotString>,
    mode_flags: i64,
    pass: impl Into<GodotString>
) -> Result<(), GodotError>
[src]

Opens an encrypted file in write or read mode. You need to pass a password to encrypt/decrypt it.

pub fn seek(&self, position: i64)[src]

Changes the file reading/writing cursor to the specified position (in bytes from the beginning of the file).

pub fn seek_end(&self, position: i64)[src]

Changes the file reading/writing cursor to the specified position (in bytes from the end of the file).
				[b]Note:[/b] This is an offset, so you should use negative numbers or the cursor will be at the end of the file.

Default Arguments

  • position - 0

pub fn set_endian_swap(&self, enable: bool)[src]

If [code]true[/code], the file's endianness is swapped. Use this if you're dealing with files written on big-endian machines.
			[b]Note:[/b] This is about the file format, not CPU type. This is always reset to [code]false[/code] whenever you open the file.

pub fn store_16(&self, value: i64)[src]

Stores an integer as 16 bits in the file.
				[b]Note:[/b] The [code]value[/code] should lie in the interval [code][0, 2^16 - 1][/code]. Any other value will overflow and wrap around.
				To store a signed integer, use [method store_64] or store a signed integer from the interval [code][-2^15, 2^15 - 1][/code] (i.e. keeping one bit for the signedness) and compute its sign manually when reading. For example:
				[codeblock]
				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 = File.new()
				    f.open("user://file.dat", File.WRITE_READ)
				    f.store_16(-42) # This wraps around and stores 65494 (2^16 - 42).
				    f.store_16(121) # In bounds, will store 121.
				    f.seek(0) # Go back to start to read the stored value.
				    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
				[/codeblock]

pub fn store_32(&self, value: i64)[src]

Stores an integer as 32 bits in the file.
				[b]Note:[/b] The [code]value[/code] should lie in the interval [code][0, 2^32 - 1][/code]. Any other value will overflow and wrap around.
				To store a signed integer, use [method store_64], or convert it manually (see [method store_16] for an example).

pub fn store_64(&self, value: i64)[src]

Stores an integer as 64 bits in the file.
				[b]Note:[/b] The [code]value[/code] must lie in the interval [code][-2^63, 2^63 - 1][/code] (i.e. be a valid [int] value).

pub fn store_8(&self, value: i64)[src]

Stores an integer as 8 bits in the file.
				[b]Note:[/b] The [code]value[/code] should lie in the interval [code][0, 255][/code]. Any other value will overflow and wrap around.
				To store a signed integer, use [method store_64], or convert it manually (see [method store_16] for an example).

pub fn store_buffer(&self, buffer: TypedArray<u8>)[src]

Stores the given array of bytes in the file.

pub fn store_csv_line(
    &self,
    values: TypedArray<GodotString>,
    delim: impl Into<GodotString>
)
[src]

Store the given [PoolStringArray] in the file as a line formatted in the CSV (Comma-Separated Values) format. You can pass a different delimiter [code]delim[/code] to use other than the default [code]","[/code] (comma). This delimiter must be one-character long.
				Text will be encoded as UTF-8.

Default Arguments

  • delim - ","

pub fn store_double(&self, value: f64)[src]

Stores a floating-point number as 64 bits in the file.

pub fn store_float(&self, value: f64)[src]

Stores a floating-point number as 32 bits in the file.

pub fn store_line(&self, line: impl Into<GodotString>)[src]

Stores the given [String] as a line in the file.
				Text will be encoded as UTF-8.

pub fn store_pascal_string(&self, string: impl Into<GodotString>)[src]

Stores the given [String] as a line in the file in Pascal format (i.e. also store the length of the string).
				Text will be encoded as UTF-8.

pub fn store_real(&self, value: f64)[src]

Stores a floating-point number in the file.

pub fn store_string(&self, string: impl Into<GodotString>)[src]

Stores the given [String] in the file.
				Text will be encoded as UTF-8.

pub fn store_var(&self, value: impl OwnedToVariant, full_objects: bool)[src]

Stores any Variant value in the file. If [code]full_objects[/code] is [code]true[/code], encoding objects is allowed (and can potentially include code).

Default Arguments

  • full_objects - false

Methods from Deref<Target = Reference>

pub fn init_ref(&self) -> bool[src]

Initializes the internal reference counter. Use this only if you really know what you are doing.
				Returns whether the initialization was successful.

Trait Implementations

impl Debug for File[src]

impl Deref for File[src]

type Target = Reference

The resulting type after dereferencing.

impl DerefMut for File[src]

impl GodotObject for File[src]

type RefKind = RefCounted

The memory management kind of this type. This modifies the behavior of the Ref smart pointer. See its type-level documentation for more information. Read more

impl Instanciable for File[src]

impl SubClass<Object> for File[src]

impl SubClass<Reference> for File[src]

Auto Trait Implementations

impl RefUnwindSafe for File

impl !Send for File

impl !Sync for File

impl Unpin for File

impl UnwindSafe for File

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> SubClass<T> for T where
    T: GodotObject
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.