Skip to main content
Version: bleeding-edge 🩸

📁 File

A File represents an entry to a system file.

💂Authority
This class can be spawned on both 🟧 Client and 🟦 Server side.
🧑‍💻API Source
This page is auto-generated! The Functions, Properties and Events described here are defined in our GitHub's API Repository! Feel free to commit suggestions and changes to the source .json API files!

info

It is not possible to open files from outside the server folder. All path must be relative to the Server's executable folder. All files are opened as binary file by default.

🎒 Examples

local configuration_file = File("my_awesome_configuration.json")

local configuration_file_json = JSON.parse(configuration_file:Read())

📂 File Access & Sandboxing

Access to files is sandboxed. Only certain directories and files are allowed to be written or read from.

Allowed Extensions

Only the following file extensions are allowed to be accessed (read & write):

.txt .dat .json .toml .xml .csv .log .png .jpg .jpeg .webp .webm .mp3 .wav .ogg .mp4

note

If you think that a file extension should be added to the allowed list, please report it in the Feedback Hub.

Server Side

On Server side, it's only allowed to access files inside the server folder itself (where server executable is located). Also, accessing the Config.toml is not allowed.

The default directory is where the server executable is located.

Example accessing a file from a Package: Packages/My-Package/Server/MyFile.json.

Client Side

On the client side, we have the concept of the .transient/ folder which is a folder automatically generated inside the client's cached Packages/ folder, where files can be created in a more persistent way.

It's not allowed to access files outside the client's cache folder Packages/, and write access is only permitted inside the .transient/ folder itself.

The default directory is in the client's cached Packages/.transient/ folder.

Example accessing a file from a Package (with read-only access): ../my-package/Client/MyFile.json.

Example accessing a transient file (with write access): MyFile.json.

🛠 Constructors

Default Constructor

No description provided

local my_file = File(file_path, truncate?)

Parameters

TypeNameDefaultDescription
stringfile_path Required parameter If on Server, this is the Path relative to server executable. Otherwise if on Client, this is the Path relative to Client's 'Packages/.transient/' folder
booleantruncatefalseWhether or not to clear the file upon opening it

🗿 Static Functions

ReturnsNameDescription
booleanCreateDirectoryCreates a Directory (for every folder passed)
booleanExistsVerifies if a entry exists in the file system
table of stringGetDirectoriesGets a list of all directories given a path
table of stringGetFilesGets a list of all files in a directory
stringGetFullPathGets the full path given a relative path based on the current side (client or server)
booleanIsDirectoryChecks if a path is a directory
booleanIsRegularFileChecks if a path is a file
integerRemoveDeletes a folder or file
integerTimeReturns when a file was last modified in Unix time

CreateDirectory

Creates a Directory (for every folder passed)
local ret = File.CreateDirectory(path)

Parameters

TypeParameterDefaultDescription
stringpath Required parameter Path to folder

Returns

TypeDescription
booleanif succeeded

Exists

Verifies if a entry exists in the file system
local ret = File.Exists(path)

Parameters

TypeParameterDefaultDescription
stringpath Required parameter Path to file or folder

Returns

TypeDescription
booleanif exists

GetDirectories

Gets a list of all directories given a path, optionally with filters
local ret = File.GetDirectories(path_filter?, max_depth?)

Parameters

TypeParameterDefaultDescription
stringpath_filter?Path filter
integermax_depth?-1The maximum depth to go further in the folders while searching. Pass -1 for maximum depth

Returns

TypeDescription
table of stringList of directories

GetFiles

Gets a list of all files in a directory, optionally with filters
local ret = File.GetFiles(path_filter?, extension_filter?, max_depth?)

Parameters

TypeParameterDefaultDescription
string or tablepath_filter?Path filter
stringextension_filter?E.g.: .lua
integermax_depth?-1The maximum depth to go further in the folders while searching. Pass -1 for maximum depth

Returns

TypeDescription
table of stringList of files

GetFullPath

Gets the full path given a relative path based on the current side (client or server)
local ret = File.GetFullPath(path)

Parameters

TypeParameterDefaultDescription
stringpath Required parameter Path to file or directory

Returns

TypeDescription
stringthe full path parsed

IsDirectory

Checks if a path is a directory
local ret = File.IsDirectory(path)

Parameters

TypeParameterDefaultDescription
stringpath Required parameter Path to folder

Returns

TypeDescription
booleanif is a directory

IsRegularFile

Checks if a path is a file
local ret = File.IsRegularFile(path)

Parameters

TypeParameterDefaultDescription
stringpath Required parameter Path to file

Returns

TypeDescription
booleanif is a regular file

Remove

Deletes a folder or file
local ret = File.Remove(path)

Parameters

TypeParameterDefaultDescription
stringpath Required parameter Path to file or folder

Returns

TypeDescription
integeramount of files deleted

Time

Returns when a file was last modified in Unix time
local ret = File.Time(path)

Parameters

TypeParameterDefaultDescription
stringpath Required parameter Path to file

Returns

TypeDescription
integerthe last update time in unix time

🦠 Functions

ReturnsNameDescription
CloseCloses the file and destroys the entity
FlushFlushes content to the file
booleanHasFailedChecks if the last operation has Failed
booleanIsBadChecks if the file status is Bad
booleanIsEOFChecks if the file status is End of File
booleanIsGoodChecks if the file status is Good
stringReadReads characters from the File and returns it. Also moves the file pointer to the latest read position. Pass 0 to read the whole file
ReadAsyncReads characters from the File asynchronously.
tableReadJSONReads the whole file as a JSON and returns it.
ReadJSONAsyncReads the whole file as a JSON and returns it asynchronously.
stringReadLineReads and returns the next file line
SeekSets the file pointer to a specific position
integerSizeReturns the size of the file
SkipSkips n (amount) positions from the current file pointer position
integerTellReturns the current file pointer position
WriteWrites the Data at the current position of the file

Close

Closes the file and destroys the entity
my_file:Close()

Flush

Flushes content to the file
my_file:Flush()

HasFailed

Checks if the last operation has Failed
local ret = my_file:HasFailed()

Returns

TypeDescription
booleanif last operation failed

IsBad

Checks if the file status is Bad
local ret = my_file:IsBad()

Returns

TypeDescription
booleanif status is Bad

IsEOF

Checks if the file status is End of File
local ret = my_file:IsEOF()

Returns

TypeDescription
booleanif is EOF

IsGood

Checks if the file status is Good
local ret = my_file:IsGood()

Returns

TypeDescription
booleanif status is Good

Read

Reads characters from the File and returns it. Also moves the file pointer to the latest read position. Pass 0 to read the whole file
local ret = my_file:Read(length?)

Parameters

TypeParameterDefaultDescription
integerlength?0Length to be read from file, leave it empty (or 0) to read the whole file

Returns

TypeDescription
stringfile data

ReadAsync

Reads characters from the File asynchronously.
my_file:ReadAsync(length?, callback)

Parameters

TypeParameterDefaultDescription
integerlength?0Length to be read from file, pass 0 to read the whole file
functioncallback Required parameter Callback with this format

ReadJSON

Reads the whole file as a JSON and returns it.
local ret = my_file:ReadJSON()

Returns

TypeDescription
tableparsed table

ReadJSONAsync

Reads the whole file as a JSON and returns it asynchronously.
my_file:ReadJSONAsync(callback)

Parameters

TypeParameterDefaultDescription
functioncallback Required parameter Callback with the file read with this format

ReadLine

Reads and returns the next file line
local ret = my_file:ReadLine()

Returns

TypeDescription
stringfile line data

Seek

Sets the file pointer to a specific position
my_file:Seek(position)

Parameters

TypeParameterDefaultDescription
integerposition Required parameter Position to offset the file pointer

Size

Returns the size of the file
local ret = my_file:Size()

Returns

TypeDescription
integerfile size

Skip

Skips n (amount) positions from the current file pointer position
my_file:Skip(amount)

Parameters

TypeParameterDefaultDescription
integeramount Required parameter Amount to offset the file pointer

Tell

Returns the current file pointer position
local ret = my_file:Tell()

Returns

TypeDescription
integercurrent file pointer position

Write

Writes the Data at the current position of the file
my_file:Write(data)

Parameters

TypeParameterDefaultDescription
stringdata Required parameter Data to write to the file

🚀 Events

This class doesn't have own events.