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.
Checking the stable version of the documentation...
FileAccess¶
Inherits: RefCounted < Object
Provides methods for file reading and writing operations.
Description¶
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 store game save data or player configuration files.
Here's a sample on how to write and read from a file:
func save(content):
var file = FileAccess.open("user://save_game.dat", FileAccess.WRITE)
file.store_string(content)
func load():
var file = FileAccess.open("user://save_game.dat", FileAccess.READ)
var content = file.get_as_text()
return content
public void Save(string content)
{
using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Write);
file.StoreString(content);
}
public string Load()
{
using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Read);
string content = file.GetAsText();
return content;
}
In the example above, the file will be saved in the user data folder as specified in the Data paths documentation.
FileAccess will close when it's freed, which happens when it goes out of scope or when it gets assigned with null
. close can be used to close it before then explicitly. 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.
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.
Tutorials¶
Properties¶
Methods¶
void |
close ( ) |
eof_reached ( ) const |
|
file_exists ( String path ) static |
|
void |
flush ( ) |
get_8 ( ) const |
|
get_16 ( ) const |
|
get_32 ( ) const |
|
get_64 ( ) const |
|
get_as_text ( bool skip_cr=false ) const |
|
get_buffer ( int length ) const |
|
get_csv_line ( String delim="," ) const |
|
get_double ( ) const |
|
get_error ( ) const |
|
get_file_as_bytes ( String path ) static |
|
get_file_as_string ( String path ) static |
|
get_float ( ) const |
|
get_hidden_attribute ( String file ) static |
|
get_length ( ) const |
|
get_line ( ) const |
|
get_modified_time ( String file ) static |
|
get_open_error ( ) static |
|
get_path ( ) const |
|
get_path_absolute ( ) const |
|
get_position ( ) const |
|
get_read_only_attribute ( String file ) static |
|
get_real ( ) const |
|
get_sha256 ( String path ) static |
|
BitField<UnixPermissionFlags> |
get_unix_permissions ( String file ) static |
is_open ( ) const |
|
open_compressed ( String path, ModeFlags mode_flags, CompressionMode compression_mode=0 ) static |
|
open_encrypted ( String path, ModeFlags mode_flags, PackedByteArray key ) static |
|
open_encrypted_with_pass ( String path, ModeFlags mode_flags, String pass ) static |
|
void |
|
void |
|
set_hidden_attribute ( String file, bool hidden ) static |
|
set_read_only_attribute ( String file, bool ro ) static |
|
set_unix_permissions ( String file, BitField<UnixPermissionFlags> permissions ) static |
|
void |
|
void |
|
void |
|
void |
|
void |
store_buffer ( PackedByteArray buffer ) |
void |
store_csv_line ( PackedStringArray values, String delim="," ) |
void |
store_double ( float value ) |
void |
store_float ( float value ) |
void |
store_line ( String line ) |
void |
store_pascal_string ( String string ) |
void |
store_real ( float value ) |
void |
store_string ( String string ) |
void |