File System
API Folder Location : C:\Users\"UserName"\Documents\My Games\
Filesystem API that allows scripts to read, write, and manage files only inside the main scripting directory.
Scripts cannot access, modify, create, or query files outside this directory. All paths must be relative and are automatically sandboxed for safety.
Overview
The filesystem API provides the following capabilities:
Create files
Create directories
Read files
Check if a file exists
List files or directories
Delete files
Delete directories
All functions operate only on paths relative to the script directory.
Path Rules
To ensure safety and consistency:
✔ Paths must be relative
Absolute paths such as:
/folder/file.txt
C:\temp\log.txtare not allowed.
✔ Parent-directory traversal is not allowed
Paths cannot contain:
..✔ Scripts cannot escape the main scripting directory
Every operation is automatically constrained to the script directory.
Global Functions
All filesystem functions are available as global Lua functions.
create_file(path, [data]) → boolean
create_file(path, [data]) → booleanCreates or overwrites a file.
Example:
create_file("data/info.txt", "Hello World!")create_directory(path) → boolean
create_directory(path) → booleanCreates a directory (non-recursive).
Example:
create_directory("data/logs")read_file(path) → boolean, string
read_file(path) → boolean, stringReads a file and returns (success, contents).
Example:
local ok, text = read_file("data/info.txt")
if ok then
print(text)
enddoes_file_exist(path) → boolean
does_file_exist(path) → booleanChecks if a file exists.
Example:
if does_file_exist("data/info.txt") then
print("found")
endquery_directory(path, include_dirs?, include_files?, extensions_table?) → boolean, table
query_directory(path, include_dirs?, include_files?, extensions_table?) → boolean, tableLists the contents of a directory.
Parameters:
path
string
required
Directory to list
include_dirs
boolean
true
Include subdirectories
include_files
boolean
true
Include files
extensions_table
table
nil
Filter by extensions, e.g. { ".txt" }
Example:
local ok, items = query_directory("data", true, true)
if ok then
for i, name in ipairs(items) do
print(name)
end
endFilter example:
local ok, jsons = query_directory("data", false, true, { ".json" })delete_file(path) → boolean
delete_file(path) → booleanDeletes a file.
Example:
delete_file("data/old.txt")delete_directory(path) → boolean
delete_directory(path) → booleanDeletes a directory (may require the directory to be empty).
Example:
delete_directory("data/temp")Example Test Script
A simple script to confirm everything is working:
function main()
print("=== FS TEST START ===")
create_directory("fs_tests")
create_file("fs_tests/test.txt", "hello test")
local ok, data = read_file("fs_tests/test.txt")
print("read ok:", ok, "data:", data)
local ok_q, items = query_directory("fs_tests")
if ok_q then
for _, name in ipairs(items) do
print(" -", name)
end
end
delete_file("fs_tests/test.txt")
delete_directory("fs_tests")
print("=== FS TEST END ===")
return 0;
endLast updated