lovr.filesystem

Edit

The lovr.filesystem module provides access to the filesystem.

All files written will go in a special folder called the "save directory". The location of the save directory is platform-specific:

Windows C:\Users\<user>\AppData\Roaming\LOVR\<identity>
macOS /Users/<user>/Library/Application Support/LOVR/<identity>
Linux /home/<user>/.local/share/LOVR/<identity>
Android /sdcard/Android/data/<identity>/files

<identity> is a unique identifier for the project, and can be set in lovr.conf. On Android, the identity can not be changed and will always be the package id (e.g. org.lovr.app).

When files are read, they will be searched for in multiple places. By default, the save directory is checked first, then the project source (folder or zip). That way, when data is written to a file, any future reads will see the new data. The t.saveprecedence conf setting can be used to change this precedence.

Conceptually, lovr.filesystem uses a "virtual filesystem", which is an ordered list of folders and zip files that are merged into a single filesystem hierarchy. Folders and archives in the list can be added and removed with lovr.filesystem.mount and lovr.filesystem.unmount.

LÖVR extends Lua's require function to look for modules in the virtual filesystem. The search patterns can be changed with lovr.filesystem.setRequirePath, similar to package.path.

Files

Operations for reading/writing files and querying their metadata.

lovr.filesystem.appendAppend content to the end of a file.
lovr.filesystem.createDirectoryCreate a directory.
lovr.filesystem.getDirectoryItemsGet a list of files in a directory.
lovr.filesystem.getLastModifiedGet the modification time of a file.
lovr.filesystem.getSizeGet the size of a file.
lovr.filesystem.isDirectoryCheck whether a path is a directory.
lovr.filesystem.isFileCheck whether a path is a file.
lovr.filesystem.newBlobCreate a new Blob from a file.
lovr.filesystem.newFileOpen a file, returning a `File` object.
lovr.filesystem.readRead a file.
lovr.filesystem.removeRemove a file or directory.
lovr.filesystem.unwatchStop watching files.
lovr.filesystem.watchStart watching the filesystem for changes.
lovr.filesystem.writeWrite to a file.

Virtual Filesystem

lovr.filesystem.getIdentityGet the name of the save directory.
lovr.filesystem.getRealDirectoryGet the absolute path to a file.
lovr.filesystem.isFusedCheck if the project is fused.
lovr.filesystem.mountMount a directory or archive.
lovr.filesystem.setIdentitySet the name of the save directory.
lovr.filesystem.unmountUnmount a mounted archive.

Paths

Useful system paths.

lovr.filesystem.getAppdataDirectoryGet the application data directory.
lovr.filesystem.getExecutablePathGet the path of the LÖVR executable.
lovr.filesystem.getSaveDirectoryGet the location of the save directory.
lovr.filesystem.getSourceGet the location of the project source.
lovr.filesystem.getUserDirectoryGet the location of the user's home directory.
lovr.filesystem.getWorkingDirectoryGet the current working directory.

Lua

lovr.filesystem.getRequirePathGet the require path.
lovr.filesystem.loadLoad a file as Lua code.
lovr.filesystem.setRequirePathSet the require path.