I/OFor more control over file operations:

I/O

File I/O

High-Level Functions

import io.file
Function Signature Description
readText (path: String) r: String Read entire file to string
writeText (path: String, content: String) r: Bool Write string to file
appendText (path: String, content: String) r: Bool Append string to file
exists (path: String) r: Bool Check if file exists
deleteFile (path: String) r: Bool Delete a file
createDirectory (path: String) r: Bool Create a directory

Example

let content = readText("config.toml")
println("Config: {content}")

writeText("output.txt", "Hello, World!")

FsFile Class

For more control over file operations:

let file = FsFile.open("data.txt")
let content = file.readContent()
file.closeFile()
Method Return Description
open(path: String) FsFile Open for reading
create(path: String) FsFile Open for writing (create/truncate)
readContent() String Read all content
read_bytes(size: Int) Array<Int> Read N bytes
writeContent(content: String) Void Write string
write_bytes(data: Array<Int>) Void Write bytes
closeFile() Void Close file
size() Int Get file size

Runtime File Functions

Function Description
__OpenFile(path, mode) Open file, return fd (-1 on error)
__ReadFile(fd) Read entire content
__ReadFileBytes(fd, size) Read N bytes
__WriteFile(fd, content) Write string
__WriteFileBytes(fd, bytes) Write byte array
__CloseFile(fd) Close file descriptor
__FileSize(fd) Get file size
__FileError(fd) Get error message
__FileExists(path) Check existence
__DeleteFile(path) Delete file
__CreateDirectory(path) Create directory

Standard I/O

Output

Function Description
println(s: String) Print string with newline
__Print(s: String) Print without newline
__PrintInt(n: Int) Print integer
__PrintFloat(f: Float) Print float
__PrintRaw(s: String) Print without newline (for LSP headers)
__FlushStdout() Flush stdout buffer

Input

Function Description
__ReadStdinLine() Read one line from stdin (blocking)
__ReadStdinBytes(count: Int) Read exactly N bytes from stdin

StdinReader Class

import io.stdio
Method Return Description
nextLine() String Read next line
isEof() Bool Check end of input

ContentLengthReader

For LSP/JSON-RPC message framing:

let reader = ContentLengthReader.new()
let message = reader.readMessage()
let err = reader.getLastError()

Buffered I/O

import io.buffered
  • BufferedWriter -- buffered output
  • BufferedReader -- buffered input

Path Operations

import fs.path
Function Signature Description
isAbsolute (path: String) r: Bool Check absolute path
normalize (path: String) r: String Normalize path
join (parts: Array<String>) r: String Join path components
basename (path: String) r: String Get filename
dirname (path: String) r: String Get directory
pathExtension (path: String) r: String Get file extension
withoutExtension (path: String) r: String Remove extension
splitComponents (path: String) r: Array<String> Split into components

Example

let full = join(["home", "user", "docs", "file.txt"])
let dir = dirname(full)       // "home/user/docs"
let file = basename(full)     // "file.txt"
let ext = pathExtension(full) // "txt"
Architected in Kotlin. Rendered with Materia. Powered by Aether.
© 2026 Yousef.?