Module ggez::filesystem

source ·
Expand description

A cross-platform interface to the filesystem.

This module provides access to files in specific places:

  • The resources/ subdirectory in the same directory as the program executable, if any,
  • The file in the same directory as the program executable, if any,
  • The root folder of the game’s “save” directory which is in a platform-dependent location, such as ~/.local/share/<gameid>/ on Linux. The gameid is the the string passed to ContextBuilder::new(). Some platforms such as Windows also incorporate the author string into the path.

These locations will be searched for files in the order listed, and the first file found used. That allows game assets to be easily distributed as an archive file, but locally overridden for testing or modding simply by putting altered copies of them in the game’s resources/ directory. It is loosely based off of the PhysicsFS library.

See the source of the files example for more details.

The names of resources/ and can be changed with the methods resources_dir_name and resources_zip_name of ContextBuilder.

Note that the file lookups WILL follow symlinks! This module’s directory isolation is intended for convenience, not security, so don’t assume it will be secure.



  • Represents a file, either in the filesystem, or in the resources zip file, or whatever.


  • createDeprecated
    Creates a new file in the user directory and opens it to be written to, truncating it if it already exists.
  • create_dirDeprecated
    Create an empty directory in the user dir with the given name. Any parents to that directory that do not exist will be created.
  • deleteDeprecated
    Deletes the specified file in the user dir.
  • delete_dirDeprecated
    Deletes the specified directory in the user dir, and all its contents!
  • existsDeprecated
    Check whether a file or directory exists.
  • is_dirDeprecated
    Check whether a path points at a directory.
  • is_fileDeprecated
    Check whether a path points at a file.
  • log_allDeprecated
    Outputs the contents of all data directories, using the “info” log level of the log crate. Useful for debugging.
  • mountDeprecated
    Adds the given (absolute) path to the list of directories it will search to look for resources.
  • openDeprecated
    Opens the given path and returns the resulting File in read-only mode.
  • open_optionsDeprecated
    Opens a file in the user directory with the given filesystem::OpenOptions. Note that even if you open a file read-only, it can only access files in the user directory.
  • print_allDeprecated
    Prints the contents of all data directories. Useful for debugging.
  • read_configDeprecated
    Looks for a file named /conf.toml in any resource directory and loads it if it finds it. If it can’t read it for some reason, returns an error.
  • read_dirDeprecated
    Returns a list of all files and directories in the resource directory, in no particular order.
  • resources_dirDeprecated
    Returns the full path to the resource directory (even if it doesn’t exist)
  • user_config_dirDeprecated
    Return the full path to the user config directory.
  • user_data_dirDeprecated
    Return the full path to the user data directory.
  • write_configDeprecated
    Takes a Conf object and saves it to the user directory, overwriting any file already there.
  • zip_dirDeprecated
    Return the full path to the user data directory