-
Notifications
You must be signed in to change notification settings - Fork 192
Filesystem API
This library allows developer to interact with filesystem components, to mount them on virtual directories, to perform buffered I/O operations and to process string paths for extraction of their parts.
Want to read whole file contents with one line of code? Or, for example, to save table as serialized string on external HDD? No problem: library has some really convenient stuff for file manipulations.
Reads whole file as string. Returns string data if reading operation was successful, nil and reason message otherwise:
Test.txt:
--------------------------------------------
Hello world
filesystem.read("/Test.txt")> Hello worldOverwrites passed data to file. Data can has a string, number or boolean type. Returns true if writing operation was successful, false and reason message otherwise.
filesystem.write("/Test.txt", "Meow, ", "I love", "you")Test.txt:
--------------------------------------------
Meow, I love you
Works the same way as filesystem.write(), but appends passed data to end of file without overwriting.
Reads string lines from file and packs them to table. Returns table of strings if reading operation was successful, nil and reason message otherwise.
Test.txt:
--------------------------------------------
Help
They're
Everywhere
filesystem.readLines("/Test.txt")> {
"Help",
"They're"
"Everywhere"
}Reads whole file and deserializes it as table. Returns table if reading operation was successful, nil and reason message otherwise.
Test.txt:
--------------------------------------------
{"Ur mom gay", "No u"}
filesystem.readTable("/Test.txt")> {
"Ur mom gay",
"No u"
}Serializes given table as string and writes it to file. Multiple arguments are passed to text.serialize method. Returns true if serializing and writing operation was successful, false and reason message otherwise.
filesystem.writeTable("/Test.txt", {
"Primitive creature",
"Wonderful being"
})Test.txt:
--------------------------------------------
{"Primitive creature","Wonderful being"}
Need to extract file name or extension from path? Or need to remove extra slashes? These methods are for you:
Returns file name from given path:
filesystem.name("/MineOS/Pictures/Dick.pic")> Dick.pic
Returns parent path from given path:
filesystem.path("/MineOS/Pictures/Dick.pic")> /MineOS/Pictures/
Returns extension from given path:
filesystem.extension("/MineOS/Pictures/Dick.pic")> .pic
Returns given path without it's extension:
filesystem.hideExtension("/MineOS/Pictures/Dick.pic")> /MineOS/Pictures/Dick
Hidden files are files which names starts of dot symbol. This method returns true if file is hidden or false otherwise:
filesystem.isHidden("/MineOS/Pictures/Dick.pic")
filesystem.isHidden("/MineOS/Pictures/.Very big.pic")> false
> true
Removes extra repeating slashes of path:
filesystem.removeSlashes("/MineOS///Pictures//Dick.pic")> /MineOS/Pictures/Dick.pic
Want to copy file from one filesystem component to another? Mounts system was designed for that: when you add any filesystem component to computer, it's being "mounted" to virtual path.
Returns an iterator function for listing of mounted filesystems:
for proxy, path in filesystem.mounts() do
-- Do something
endMounts passed filesystem component proxy table to specified path.
Unmounts passed filesystem component proxy table or it's string address from mounted path.
Determines correct filesystem component proxy from given path and returns it with rest path part:
filesystem.get("/MineOS/Mounts/478ABF/Test.pic")> table, "Test.pic"If you need to read write single byte to file, N bytes from file, to write a sing