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 |
Enumerations¶
enum ModeFlags:
ModeFlags READ = 1
Opens the file for read operations. The cursor is positioned at the beginning of the file.
ModeFlags WRITE = 2
Opens the file for write operations. The file is created if it does not exist, and truncated if it does.
ModeFlags READ_WRITE = 3
Opens the file for read and write operations. Does not truncate the file. The cursor is positioned at the beginning of the file.
ModeFlags WRITE_READ = 7
Opens the file for read and write operations. The file is created if it does not exist, and truncated if it does. The cursor is positioned at the beginning of the file.
enum CompressionMode:
CompressionMode COMPRESSION_FASTLZ = 0
Uses the FastLZ compression method.
CompressionMode COMPRESSION_DEFLATE = 1
Uses the DEFLATE compression method.
CompressionMode COMPRESSION_ZSTD = 2
Uses the Zstandard compression method.
CompressionMode COMPRESSION_GZIP = 3
Uses the gzip compression method.
CompressionMode COMPRESSION_BROTLI = 4
Uses the brotli compression method (only decompression is supported).
flags UnixPermissionFlags:
UnixPermissionFlags UNIX_READ_OWNER = 256
Read for owner bit.
UnixPermissionFlags UNIX_WRITE_OWNER = 128
Write for owner bit.
UnixPermissionFlags UNIX_EXECUTE_OWNER = 64
Execute for owner bit.
UnixPermissionFlags UNIX_READ_GROUP = 32
Read for group bit.
UnixPermissionFlags UNIX_WRITE_GROUP = 16
Write for group bit.
UnixPermissionFlags UNIX_EXECUTE_GROUP = 8
Execute for group bit.
UnixPermissionFlags UNIX_READ_OTHER = 4
Read for other bit.
UnixPermissionFlags UNIX_WRITE_OTHER = 2
Write for other bit.
UnixPermissionFlags UNIX_EXECUTE_OTHER = 1
Execute for other bit.
UnixPermissionFlags UNIX_SET_USER_ID = 2048
Set user id on execution bit.
UnixPermissionFlags UNIX_SET_GROUP_ID = 1024
Set group id on execution bit.
UnixPermissionFlags UNIX_RESTRICTED_DELETE = 512
Restricted deletion (sticky) bit.