[−][src]Struct gdnative::api::File
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
pub const COMPRESSION_DEFLATE: i64
[src]
pub const COMPRESSION_FASTLZ: i64
[src]
pub const COMPRESSION_GZIP: i64
[src]
pub const COMPRESSION_ZSTD: i64
[src]
pub const READ: i64
[src]
pub const READ_WRITE: i64
[src]
pub const WRITE: i64
[src]
pub const WRITE_READ: i64
[src]
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]
&self,
delim: impl Into<GodotString>
) -> TypedArray<GodotString>
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]
&self,
path: impl Into<GodotString>,
flags: i64
) -> Result<(), GodotError>
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]
&self,
path: impl Into<GodotString>,
mode_flags: i64,
compression_mode: i64
) -> Result<(), GodotError>
pub fn open_encrypted(
&self,
path: impl Into<GodotString>,
mode_flags: i64,
key: TypedArray<u8>
) -> Result<(), GodotError>
[src]
&self,
path: impl Into<GodotString>,
mode_flags: i64,
key: TypedArray<u8>
) -> Result<(), GodotError>
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]
&self,
path: impl Into<GodotString>,
mode_flags: i64,
pass: impl Into<GodotString>
) -> Result<(), GodotError>
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]
&self,
values: TypedArray<GodotString>,
delim: impl Into<GodotString>
)
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]
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
fn class_name() -> &'static str
[src]
fn null() -> Null<Self>
[src]
fn new() -> Ref<Self, Unique> where
Self: Instanciable,
[src]
Self: Instanciable,
fn cast<T>(&self) -> Option<&T> where
T: GodotObject + SubClass<Self>,
[src]
T: GodotObject + SubClass<Self>,
fn upcast<T>(&self) -> &T where
Self: SubClass<T>,
T: GodotObject,
[src]
Self: SubClass<T>,
T: GodotObject,
unsafe fn assume_shared(&self) -> Ref<Self, Shared>
[src]
unsafe fn assume_thread_local(&self) -> Ref<Self, ThreadLocal> where
Self: GodotObject<RefKind = RefCounted>,
[src]
Self: GodotObject<RefKind = RefCounted>,
unsafe fn assume_unique(&self) -> Ref<Self, Unique>
[src]
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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> SubClass<T> for T where
T: GodotObject,
[src]
T: GodotObject,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,