File Operations
Read, write, copy, move, and manage files and directories with simple, cross-platform actions. Works seamlessly on macOS, Linux, and Windows.
Cross-Platform by Design
All file operations use forward slashes (/) in paths, automatically translated on Windows.
No platform-specific code needed.
Read / Write
Read and write text, JSON, or binary files.
List / Stat
List directory contents and get file metadata.
Copy / Move
Copy and move files or directories.
Exists / CreateDirectory
Check existence and create directories.
Reading and Writing Files
Read Files
(* Read text file *)
<Read> the <content> from the <file: "./README.md">.
(* Read JSON file - automatically parsed *)
<Read> the <config: JSON> from the <file: "./config.json">.
(* Read binary file *)
<Read> the <image: bytes> from the <file: "./logo.png">.
Write Files
(* Write text - creates parent directories automatically *)
<Write> the <report> to the <file: "./output/report.txt">.
(* Write JSON *)
<Write> the <data: JSON> to the <file: "./export.json">.
Append to Files
(* Append to log file *)
<Append> the <log-line> to the <file: "./logs/app.log">.
Directory Operations
List Directory Contents
(* List all entries *)
<List> the <entries> in the <directory: "./uploads">.
(* Filter with glob pattern *)
<List> the <aro-files> in the <directory: "./src"> matching "*.aro".
(* List recursively *)
<List> the <all-files> in the <directory: "./project"> recursively.
Each entry includes:
name- file or directory namepath- full pathsize- size in bytesisFile/isDirectory- type flagsmodified- last modification date
Check Existence
(* Check if file exists *)
<Exists> the <found> for the <file: "./config.json">.
when <found> is false {
<Log> "Config not found!" to the <console>.
}
(* Check if directory exists *)
<Exists> the <dir-exists> for the <directory: "./output">.
Create Directories
(* Create directory with all parent directories *)
<CreateDirectory> the <output-dir> to the <path: "./output/reports/2024">.
Get File Metadata
(* Get detailed file stats *)
<Stat> the <info> for the <file: "./document.pdf">.
<Log> <info: size> to the <console>.
<Log> <info: modified> to the <console>.
Copy and Move
Copy Files
(* Copy a file *)
<Copy> the <file: "./template.txt"> to the <destination: "./copy.txt">.
(* Copy a directory - recursive by default *)
<Copy> the <directory: "./src"> to the <destination: "./backup/src">.
Move and Rename
(* Rename a file *)
<Move> the <file: "./draft.txt"> to the <destination: "./final.txt">.
(* Move to different directory *)
<Move> the <file: "./inbox/report.pdf"> to the <destination: "./archive/report.pdf">.
Complete Example
Here's a complete example that demonstrates file operations:
(Application-Start: File Operations Demo) {
<Log> "=== File Operations ===" to the <console>.
(* Check and create output directory *)
<Exists> the <dir-exists> for the <directory: "./demo-output">.
when <dir-exists> is false {
<CreateDirectory> the <output> to the <path: "./demo-output">.
<Log> "Created directory" to the <console>.
}
(* Write a file *)
<Write> the <content> to the <file: "./demo-output/hello.txt">
with "Hello from ARO!".
(* Append to it *)
<Append> the <line> to the <file: "./demo-output/hello.txt">
with "\nAppended line.".
(* Get stats *)
<Stat> the <info> for the <file: "./demo-output/hello.txt">.
<Log> "Size: <info: size> bytes" to the <console>.
(* Copy the file *)
<Copy> the <file: "./demo-output/hello.txt">
to the <destination: "./demo-output/hello-copy.txt">.
(* List directory *)
<List> the <files> in the <directory: "./demo-output">.
<Log> "=== Complete ===" to the <console>.
<Return> an <OK: status> for the <demo>.
}
Actions Reference
| Action | Description | Prepositions |
|---|---|---|
Read |
Read file contents | from |
Write |
Write to file (overwrite) | to |
Append |
Append to file | to, into |
List |
List directory contents | in, from |
Stat |
Get file/directory metadata | for |
Exists |
Check existence | for |
CreateDirectory |
Create directory | to, for |
Copy |
Copy file/directory | to |
Move |
Move/rename | to |
Delete |
Delete file | none |
Learn More
See the full file operations specification in ARO-0036: Native File Operations.