Provides an interface to the user's filesystem.

This module provides access to Files in two places, and two places only:

  • The root folder of the .love-file. (Alternatively a directory).
  • The root folder of the write directory.

Each game is granted a single directory on the system where files can be saved through love.filesystem. This is the only directory where love.filesystem can write files. These directories will typically be found in something like:

  • Windows XP: C:\Documents and Settings\user\Application Data\Love\ or %appdata%\Love\
  • Windows Vista and 7: C:\Users\user\AppData\Roaming\LOVE or %appdata%\Love\
  • Linux: $XDG_DATA_HOME/love/ or ~/.local/share/love/
  • mac: /Library/Application Support/LOVE/

Files that are opened for write or append will always be created in the save directory. The same goes for other operations that involve writing to the filesystem, like mkdir.

Files that are opened for read will be looked for in the save directory, and then in the game root folder (in that order). So if a file with a certain filename (and path) exist in both the .love-file and the save folder, the one in the save directory takes precedence.

Note: All paths are relative to the .love and save directory. (except for the get*Directory() calls)

It is recommended to set your game's identity first in your conf.lua. You can set it with love.filesystem.setIdentity() as well.


FileRepresents a file on the filesystem.
FileDataData representing the contents of a file.


love.filesystem.enumerateReturns all the files and subdirectories in the directory.
love.filesystem.existsCheck whether a file or directory exists.
love.filesystem.getAppdataDirectoryReturns the application data directory (could be the same as getUserDirectory)
love.filesystem.getLastModifiedGets the last modification time of a file.
love.filesystem.getSaveDirectoryGets the full path to the designated save directory.
love.filesystem.getUserDirectoryReturns the path of the user's directory
love.filesystem.getWorkingDirectoryGets the current working directory.
love.filesystem.initInitializes love.filesystem, will be called internally, so should not be used explictly.
love.filesystem.isDirectoryCheck whether something is a directory.
love.filesystem.isFileCheck whether something is a file.
love.filesystem.linesIterate over the lines in a file.
love.filesystem.loadLoads a Lua file (but does not run it).
love.filesystem.mkdirCreates a directory.
love.filesystem.newFileCreates a new File object.
love.filesystem.newFileDataCreates a new FileData object from a file on disk, or from a string in memory.
love.filesystem.readRead the contents of a file.
love.filesystem.removeRemoves a file (or directory).
love.filesystem.setIdentitySets the write directory for your game.
love.filesystem.setSourceSets the source of the game, where the code is present. Used internally.
love.filesystem.writeWrite data to a file.


FileDecoderHow to decode a given FileData.
FileModeThe different modes you can open a File in.

See Also

Other Languages