fs
The fs module provides file system operations.
Import
Section titled “Import”import fsimport { read_file, write_file, exists } from fsReading Files
Section titled “Reading Files”read_file
Section titled “read_file”Read entire file as string:
@content = @fs#read_file("example.txt")read_file_bytes
Section titled “read_file_bytes”Read file as byte array:
@bytes = @fs#read_file_bytes("image.png")read_lines
Section titled “read_lines”Read file as array of lines:
@lines = @fs#read_file_lines("data.csv")read_file_lines_lazy
Section titled “read_file_lines_lazy”Lazily iterate over lines:
@lines = @fs#read_file_lines_lazy("huge_file.txt")for @line in @lines process(@line)fin for.Writing Files
Section titled “Writing Files”write_file
Section titled “write_file”Write string to file (overwrites):
@fs#write_file("output.txt", "Hello, World!")write_file_bytes
Section titled “write_file_bytes”Write byte array to file:
@fs#write_file_bytes("data.bin", @bytes)append_file
Section titled “append_file”Append to file:
@fs#append_file("log.txt", "New entry\n")write_lines
Section titled “write_lines”Write array of lines:
@lines = ["line 1", "line 2", "line 3"]@fs#write_lines("output.txt", @lines)File Information
Section titled “File Information”exists
Section titled “exists”Check if path exists:
if @fs#exists("file.txt") write("File exists")fin if.is_file
Section titled “is_file”Check if path is a file:
if @fs#is_file("file.txt") write("It's a file")fin if.is_directory
Section titled “is_directory”Check if path is a directory:
if @fs#is_directory("src") write("It's a directory")fin if.Get file size in bytes:
@bytes = @fs#size("file.txt")modified_time
Section titled “modified_time”Get last modified time:
@time = @fs#modified_time("file.txt")created_time
Section titled “created_time”Get creation time:
@time = @fs#created_time("file.txt")permissions
Section titled “permissions”Get file permissions:
@perms = @fs#permissions("file.txt")File Operations
Section titled “File Operations”Copy a file:
@fs#copy("source.txt", "destination.txt")Move/rename a file:
@fs#move("old_name.txt", "new_name.txt")remove
Section titled “remove”Delete a file:
@fs#remove("file.txt")rename
Section titled “rename”Rename a file:
@fs#rename("old.txt", "new.txt")truncate
Section titled “truncate”Truncate file to size:
@fs#truncate("file.txt", 1024)Directory Operations
Section titled “Directory Operations”create_dir
Section titled “create_dir”Create a directory:
@fs#create_dir("new_directory")create_dir_all
Section titled “create_dir_all”Create directory and all parents:
@fs#create_dir_all("path/to/nested/dir")remove_dir
Section titled “remove_dir”Remove empty directory:
@fs#remove_dir("empty_dir")remove_dir_all
Section titled “remove_dir_all”Remove directory and all contents:
@fs#remove_dir_all("dir_with_contents")list_dir
Section titled “list_dir”List directory contents:
@entries = @fs#list_dir("src")for @entry in @entries write(@entry)fin for.walk_dir
Section titled “walk_dir”Recursively walk directory:
@files = @fs#walk_dir("src")for @file in @files if @fs#is_file(@file) process(@file) fin if.fin for.current_dir
Section titled “current_dir”Get current working directory:
@cwd = @fs#current_dir()set_current_dir
Section titled “set_current_dir”Change working directory:
@fs#set_current_dir("/tmp")temp_dir
Section titled “temp_dir”Get temporary directory:
@tmp = @fs#temp_dir()Path Operations
Section titled “Path Operations”Join path components:
@path = @fs#join("src", "main.draft")@// "src/main.draft"parent
Section titled “parent”Get parent directory:
@parent = @fs#parent("/home/user/file.txt")@// "/home/user"file_name
Section titled “file_name”Get file name:
@name = @fs#file_name("/home/user/file.txt")@// "file.txt"file_stem
Section titled “file_stem”Get file name without extension:
@stem = @fs#file_stem("/home/user/file.txt")@// "file"extension
Section titled “extension”Get file extension:
@ext = @fs#extension("/home/user/file.txt")@// ".txt"is_absolute
Section titled “is_absolute”Check if path is absolute:
@fs#is_absolute("/home/user") @// true@fs#is_absolute("relative/path") @// falsecanonicalize
Section titled “canonicalize”Resolve to absolute path:
@abs = @fs#canonicalize("./relative/path")Permissions
Section titled “Permissions”set_permissions
Section titled “set_permissions”Set file permissions:
@fs#set_permissions("file.txt", 0o644)is_readable
Section titled “is_readable”Check if file is readable:
@fs#is_readable("file.txt")is_writable
Section titled “is_writable”Check if file is writable:
@fs#is_writable("file.txt")is_executable
Section titled “is_executable”Check if file is executable:
@fs#is_executable("script.sh")File Watching
Section titled “File Watching”Watch for file changes:
@watcher = @fs#watch(".")for @event in @watcher write("File changed: " + @event#path)fin for.Archives
Section titled “Archives”extract_zip
Section titled “extract_zip”Extract a zip file:
@fs#extract_zip("archive.zip", "./output")create_zip
Section titled “create_zip”Create a zip archive:
@fs#create_zip(["file1.txt", "file2.txt"], "archive.zip")